XSL转换NameSpace

时间:2016-08-05 04:57:42

标签: xml xslt

我正在使用XSL做一些工作,并且有一些初学者的困难。

我通过将xsd转换为初学者的xml来获取我的源代码。目前我只想尝试与元素匹配,并专注于以后的样式。我还没有为xsd到xml样式表找到很多信息来源(至少作为初学者可以接受),这就是我到目前为止基于转换后的xml的原因。

我的源代码的简化版本是:

<n1:Test xmlns:n1="urn:com:sam:types:test">
     <a>1</a>
     <b>1</b>
     <c>1</c>
</n1:Test>

我的XSL是:

<xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:pla="urn:com:sam:types:test">
    <xsl:output method="xml" />
    <xsl:template match="/">

<xsl:for-each select="n1:Test">

<xsl:value-of select="a" />
<xsl:value-of select="b" />
<xsl:value-of select="c" />

</xsl:for-each>
</xsl:template>

</xsl:stylesheet>

我对XSL并不熟悉,并且一直在努力工作,但是我还在苦苦挣扎。我相信我的问题与我尝试应用命名空间的方式有关。

非常感谢任何指导。

1 个答案:

答案 0 :(得分:0)

您的样式表有两个明显的错误:

  1. 您必须在version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
  2. 之间留出空格
  3. 您声明xmlns:pla="urn:com:sam:types:test",但是您使用了。{ n1:前缀。你应该:

    <xsl:for-each select="pla:Test">
    

    而不是:

    <xsl:for-each select="n1:Test">
    
  4. 你没有发布你的预期结果,所以我不知道你可能有什么其他问题 - 但如果你修复这两个问题,至少你会得到一些结果。