我正在尝试编写一个插入子元素的XSLT过滤器转换。这是输入XML:
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns="http://example.org">
<child info="first"/>
<child info="second"/>
</root>
我的XSLT转换如下:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://example.org"
xpath-default-namespace="http://example.org">
<!-- insert new child element at front -->
<xsl:template match="child[1]">
<child info="very first"/>
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<!-- standard copy template -->
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
复制模板工作正常,但应该执行特殊操作的模板不能。我已经尝试了其他帖子的几个提案,但没有用。我可以运行XSLT 2.0,但是不能使用前缀来更改输入文件。