xml - xslt 和命名空间的问题

标签 xml xslt namespaces

我有一个像这样序列化的 C# 类:

<oadResults 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns="http://www.tyr.org.uk/standards"
>
  <Link>http://www.tyr.org.uk//290/Data.zip</Link>
  <ID>3540</ID>
</oadResults>

我有一个 XSLT 文件:
<xsl:stylesheet 
  version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
  <xsl:template match="/">
    ID <xsl:value-of select="ID"/>   </xsl:template>
</xsl:stylesheet>

转换不起作用,结果是:"ID"
但是如果我从 XML 文件中删除它:
xmlns="http://www.tyr.org.uk/standards"

它工作正常,我得到_ "ID:3540"
您能告诉我如何解决更改 XSL 文件而不是 XML 的问题吗?

最佳答案

我会建议:

<xsl:stylesheet 
  version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:tyr="http://www.tyr.org.uk/standards"
  exclude-result-prefixes="tyr"
>
  <xsl:template match="/tyr:oadResults">
    <xsl:text>ID </xsl:text>
    <xsl:value-of select="tyr:ID"/>   
    <xsl:text>&#10;</xsl:text>
  </xsl:template>
</xsl:stylesheet>

请注意 <xsl:text>元素。它们有助于保持 XSL 代码干净(就正确缩进而言),同时确保可预测的输出格式。
exclude-result-prefixes防止 tyr命名空间声明不会出现在输出中。

关于xml - xslt 和命名空间的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1327291/

相关文章:

javascript - 使用 Javascript 修改 XML 元素(在 XSLT 样式表中)

php - 针对相同的 XML 模式 (XSD) 加速一批 XML 文件的 XML 模式验证

c# - 使用 ref 属性展平 xml 文件

c# - 具有空命名空间的 C# 类

Java XML Binding 库不直接从元素创建实例而是调用工厂

java - 安卓.view.InflateException : Binary XML file line #87: Error inflating class TextView

XSLT 函数 document() 使用通配符

regex - XSL : how can I generate a regex pattern on demand?

ruby-on-rails - 项目中的类和 gem 之间的命名空间问题

Android应用名称超过10个字母