【发布时间】:2021-09-23 11:29:49
【问题描述】:
我有两个 xml 文件。 首先是一个 config.xml 文件:
<values>
<s1>yes</s1>
<s2>no</s2>
<s3>yes</s3>
<s4>no</s4>
</values>
第二个是 my_input.xml 文件,我想通过 xslt 对其进行转换:
<?xml version="1.0"?>
<aaa>
<bbb>
<code>Code</code>
<name1>1111</name1>
<name2>2222</name2>
<documents xsi:nil="true"/>
<xi:include href="s1.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="s2.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="s3.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="s4.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
</bbb>
</aaa>
Output.xml 文件应如下所示:
<?xml version="1.0"?>
<aaa>
<bbb>
<code>Code</code>
<name1>1111</name1>
<name2>2222</name2>
<documents xsi:nil="true"/>
<xi:include href="s1.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="s3.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
</bbb>
</aaa>
如果 confing.xml 文件中将出现“否”字符串,则应从 my_input.xml 文件中删除该行。
您可以在下面找到我的代码。但我只能删除单独的行,但我不确定如何添加额外的 IF 条件......你有什么想法吗?
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="1.0">
<xsl:output omit-xml-declaration="no" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[@href = 's2.xml']" />
<xsl:template match="*[@href = 's4.xml']" />
</xsl:stylesheet>
兄弟, 溶胶
【问题讨论】:
标签: xml xslt xslt-1.0 xslt-2.0