我迷失了XSLT的艰难转型。
这是我的输入文件:
<block>
<item>
<name>item1</name>
<place>place1</place>
</item>
<item>
<name>item2</name>
<comment>comment2</comment>
<place>place2</place>
</item>
<item>
<name>item3</name>
<stick>stick3</stick>
<place>place3</place>
</item>
...
</block>
有任何阻止'项目':
我的问题:对于每个项元素,我想插入一个元素 stick :
<stick>default</stick>
要恢复,我的输出文件必须是:
<block>
<item>
<name>item1</name>
<stick>default</stick>
<place>place1</place>
</item>
<item>
<name>item2</name>
<comment>comment2</comment>
<stick>default</stick>
<place>place2</place>
</item>
<item>
<name>item3</name>
<stick>stick3</stick>
<place>place3</place>
</item>
...
</block>
我已经尝试了很多XSLT转换,但不可能得到预期的结果: - (
有什么想法吗?
此致 Zido
答案 0 :(得分:1)
那怎么样:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="item[not(stick)]/comment | item[not(stick or comment)]/name">
<xsl:copy-of select="."/>
<stick>default</stick>
</xsl:template>
</xsl:stylesheet>