我有一个像这样序列化的 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> </xsl:text>
</xsl:template>
</xsl:stylesheet>
请注意
<xsl:text>
元素。它们有助于保持 XSL 代码干净(就正确缩进而言),同时确保可预测的输出格式。exclude-result-prefixes
防止 tyr
命名空间声明不会出现在输出中。
关于xml - xslt 和命名空间的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1327291/