使用XSLT生成XSLT,名称空间前缀

时间:2015-12-08 17:46:11

标签: xml xslt

我想使用XSLT将XML转换为另一个XSLT。在输出XSLT中,名称空间前缀和uri应由XML文档决定。例如,XML文档是

<namespaces>
    <namespace>
       <prefix>abc</prefix>
       <uri>my.domain.abc</uri>
    </namespace>
    <namespace>
       <prefix>def</prefix>
       <uri>my.domain.def</uri>
    </namespace>
</namespaces>

输出XSLT应该是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" 
xmlns:abc="my.domain.abc"
xmlns:def="my.domain.def"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/"/>
</xsl:stylesheet>

我试过这种方式,它没有工作:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:axsl="http://www.w3.org/1999/XSL/TransformAlias">
    <xsl:namespace-alias stylesheet-prefix="axsl" result-prefix="xsl"/>

    <xsl:template match="/">
      <axsl:stylesheet 
            xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
            version="2.0">
        <xsl:for-each select="/namespaces/namespace">
          <xsl:namespace name="{prefix}" select="uri"/>
        </xsl:for-each>

      </axsl:stylesheet>
    </xsl:template>

</xsl:stylesheet>

错误为prefix: Missing context item。有谁想过如何实现这个?

0 个答案:

没有答案