【发布时间】:2011-11-03 05:15:51
【问题描述】:
我正在尝试使用 XSL 组合 XML 文件。我在 stackoverflow、google 和其他地方寻找线索。我发现了类似的问题或主题,但没有一个与我想要做的完全匹配。
我已尝试利用从这些来源中收集到的信息,但似乎无法完全得到我正在寻找的结果。所以...到 S/O 进行快速咨询!
这是我目前的做法:
输入文件1.xml
<?xml version="1.0" encoding="UTF-8"?>
<protocol>
<message_exchanges>
<message_exchange id="1"/>
<message_exchange id="2"/>
</message_exchanges>
<message_types>
<message_type id="1"/>
<message_type id="2"/>
<message_type id="3"/>
</message_types>
</protocol>
输入文件2.xml
<?xml version="1.0" encoding="UTF-8"?>
<protocol>
<message_exchanges>
<message_exchange id="3"/>
<message_exchange id="4"/>
</message_exchanges>
<message_types>
<message_type id="4"/>
<message_type id="5"/>
<message_type id="6"/>
</message_types>
</protocol>
输入 index.xml
<?xml version="1.0" encoding="UTF-8"?>
<index>
<component>file1.xml</component>
<component>file2.xml</component>
</index>
combine.xsl
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" indent="yes"/>
<xsl:template match="index">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="component">
<xsl:apply-templates select="document(.)"/>
</xsl:template>
.....help me fix / finish this file
</xsl:stylesheet>
desired_result.xml
<?xml version="1.0" encoding="UTF-8"?>
<protocol>
<message_exchanges>
<message_exchange id="1"/>
<message_exchange id="2"/>
<message_exchange id="3"/>
<message_exchange id="4"/>
</message_exchanges>
<message_types>
<message_type id="1"/>
<message_type id="2"/>
<message_type id="3"/>
<message_type id="4"/>
<message_type id="5"/>
<message_type id="6"/>
</message_types>
</protocol>
1,000 奖励积分,如果您能帮我即时添加属性:
<message_type id="1" src="file1.xml"/>
<message_type id="4" src="file2.xml"/>
我正在使用 PHP 的 XSLTProcessor 加载 XSL 文件并将其应用到 XML 索引文件,因此如果添加 src 属性有用/更容易实现,我可以将源文件名作为参数加载到处理器中。
谢谢!让我知道是否可以进一步澄清。
The most useful link I've found so far and the basis of my current approach
【问题讨论】:
-
糟糕,不,不是故意的。现已修复。
-
好问题,+1。请参阅我的答案以获得相当简短、通用且直接的解决方案。