这是我的XML输入:
<maindocument>
<first>
<testing>random text</testing>
<checking>random test</checking>
</first>
<testing unit = "yes">
<tested>sample</tested>
<checking>welcome</checking>
<import task="yes">
<downloading>sampledata</downloading>
</import>
<import section="yes">
<downloading>valuable text</downloading>
</import>
<import chapter="yes">
<downloading>checkeddata</downloading>
</import>
</testing>
</maindocument>
输出应该是:首先,它将检查测试单元是否=“是”。如果是,则必须检查section属性=“是”。这是输出:
<maindocument>
<import>
<doctype>Valuable text</doctype>
</import>
</maindocument
我正在检查xsl:if
条件。首先,它将检查测试单元是否=“是”。然后它将检查导入部分是否为“是”。代码无法实现上述输出。
答案 0 :(得分:2)
这是你要找的吗?
XSLT 2.0
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="maindocument">
<xsl:copy>
<xsl:apply-templates select="@*|testing[@unit='yes']/import[@section='yes']"/>
</xsl:copy>
</xsl:template>
<xsl:template match="import/@*"/>
</xsl:stylesheet>
<强>输出强>
<maindocument>
<import>
<downloading>valuable text</downloading>
</import>
</maindocument>
如果您不想在<maindocument>
中保留任何属性,请从@*|
select
模板中的xsl:apply-templates
移除maindocument
答案 1 :(得分:1)
此转化:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/*">
<maindocument>
<xsl:apply-templates select="testing[@unit='yes']/import[@section='yes']"/>
</maindocument>
</xsl:template>
<xsl:template match="import">
<import>
<doctype><xsl:value-of select="*"/></doctype>
</import>
</xsl:template>
</xsl:stylesheet>
应用于提供的XML文档时:
<maindocument>
<first>
<testing>random text</testing>
<checking>random test</checking>
</first>
<testing unit = "yes">
<tested>sample</tested>
<checking>welcome</checking>
<import task="yes">
<downloading>sampledata</downloading>
</import>
<import section="yes">
<downloading>valuable text</downloading>
</import>
<import chapter="yes">
<downloading>checkeddata</downloading>
</import>
</testing>
</maindocument>
会产生想要的正确结果:
<maindocument>
<import>
<doctype>valuable text</doctype>
</import>
</maindocument>