我试图根据决策xml文件(Input2)中可用的数据从主xml文件(Input1)生成输出 XML文件. 主文件 Level1 Level2 LinkedToDATA1/LinkedTo !DATA1 in the decision file Attribute11/Attribute1 Attribute22/Attribute2 /Level2 Level2 L
主文件
<Level1> <Level2> <LinkedTo>DATA1</LinkedTo> <!DATA1 in the decision file> <Attribute1>1</Attribute1> <Attribute2>2</Attribute2> </Level2> <Level2> <LinkedTo>DATA2</LinkedTo> <Attribute1>3</Attribute1> <Attribute2>4</Attribute2> </Level2> </Level1>
决策文件:
<TopLevel> <DATA1> <Available>Y</Available> </DATA1> <DATA2> <Available>N</Available> </DATA2> </TopLevel>
处理时的XSLT必须输出结果文件(基于决策文件中的YES或NO).
<Level1> <Level2> <Attribute1>1</Attribute1> <Attribute2>2</Attribute2> </Level2> </Level1>
我必须承认我之前从未做过XML的事情,但这是可行性研究所必需的.什么应该在XSLT?我可以使用你的答案并扩展这个概念.
或者如果有替代方案(python,C#,C,C等),也欢迎这些.我可以使用C/C++或任何面向过程的语言进行管理.
使用document功能.将URI传递给决策XML,例如:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="Level1">
<xsl:copy>
<xsl:apply-templates select="Level2"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Level2">
<xsl:if test="document('Decision.xml')/TopLevel/*[
name() = current()/LinkedTo and Available = 'Y']">
<xsl:copy>
<xsl:apply-templates select="*[not(self::LinkedTo)]"/>
</xsl:copy>
</xsl:if>
</xsl:template>
<xsl:template match="*">
<xsl:copy-of select="."/>
</xsl:template>
</xsl:stylesheet>
