当属性值匹配时,如何使用来自两个 xml 文件的信息制作 xsl?
我有两个 xml 文件,分别命名为 1.xml 和 2.xml。'1.xml' 包含两个元素,aa 和 bb。'bb' 具有三个属性:日期、编号和类别。
'2.xml'有五个元素,cc、dd>ee、ff和gg。其中两个各有一个属性:“dd”(id)和“ff”(类)。
我想制作一个 xsl,它使用“1.xml”中的日期属性值来查找“2xml”中具有相应属性值的 id 元素。
'1.xml':
<aa>
<bb date="31.12.2022" num="prs1" class="alt_3"></bb>
<bb date="07.01.2023" num="prs2" class="alt_2"></bb>
</aa>
这是另一个
'2.xml'
<cc>
<dd id="prs1">
<ee>steak</ee>
<ff>
<gg class="alt_1">carrot cake</gg>
<gg class="alt_2">chocolate cake</gg>
<gg class="alt_3">cream cake</gg>
</ff>
</dd>
<dd id="prs2">
<ee>chicken</ee>
<ff>
<gg class="alt_1">Swiss roll</gg>
<gg class="alt_2">Napoleon cake</gg>
<gg class="alt_3">marzipan cake</gg>
</ff>
</dd>
</cc>
这就是我想要得到的:
<table>
<tr>
<td>31.12.2022</td>
<td>steak</td>
<td>cream cake</td>
</tr>
<tr>
<td>07.01.2023</td>
<td>chicken</td>
<td>Napoleon cake</td>
</tr>
</table>
这是我到目前为止所得到的:
<body>
<table>
<tr>
<td>31.12.2022</td>
<td></td>
</tr>
<tr>
<td>07.01.2023</td>
<td></td>
</tr>
</table>
<xsl:template match="aa">
<html>
<body>
<table>
<xsl:for-each select="bb">
<tr>
<td><xsl:value-of select="@date"/></td>
<td><xsl:variable name="bbnum" select="@num"/>
<xsl:variable name="bbid" select="document('2.xml')/cc[@id = current()/dd/@id]/*"/>
<xsl:if test="$bbnum!=$bbid">
<xsl:value-of select="ee"/>
</xsl:if> </td>
<td></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>