我有一個XML結構,我需要爲節點應用過濾,並且需要選擇特定元素的過濾節點。實際的XML的結構看起來像這 -用於選擇過濾節點中的特定值的XSLT
<Host>
<element1>type0</element1>
<element2>Fruits</element2>
....
<elementn>Price0</elementn>
<Menu>
<NodeA>
<element1>type1</element1>
<element2>Fruits</element2>
....
<elementn>Price1</elementn>
<Menu>
<NodeB>
<element1>type2</element1>
<element2>Fruits</element2>
....
<elementn>Price2</elementn>
<Menu>
<NodeC>
<element1>type3</element1>
<element2>Fruits</element2>
....
<elementn>Price3</elementn>
<Menu>
<NodeD>
<Element1>type4</element1>
<Element2>Vegetables</Element2>
....
<Elementn>Price4</elementn>
</NodeD>
</Menu>
</NodeC>
</Menu>
</NodeB>
</Menu>
</NodeA>
<NodeE>
<element1>type5</element1>
<element2>Fruits</element2>
....
<elementn>Price5</elementn>
<Menu>
<NodeF>
<element1>type6</element1>
<element2>Vegetables</element2>
....
<elementn>Price6</elementn>
</NodeF>
</Menu>
</NodeE>
</Menu>
</Host>
現在我已篩選這個XML如下 - 一)如果<element2>
==水果中的所有節點,XML結果是 -
<Host>
<element1>type0</element1>
<element2>Fruits</element2>
....
<elementn>Price0</elementn>
<NodeA>
<element1>type1</element1>
<element2>Fruits</element2>
....
<elementn>Price1</elementn>
</NodeA>
<NodeB>
<element1>type2</element1>
<element2>Fruits</element2>
....
<elementn>Price2</elementn>
</NodeB>
<NodeC>
<element1>type3</element1>
<element2>Fruits</element2>
....
<elementn>Price3</elementn>
</NodeC>
<NodeE>
<element1>type5</element1>
<element2>Fruits</element2>
....
<elementn>Price5</elementn>
</NodeE>
</Host>
用於獲取上述結果XSLT是 -
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes" />
<xsl:param name="element2" select="'Fruits'" />
<xsl:template match="/*">
<xsl:copy>
<xsl:apply-templates select="//*[element2=$element2]" mode="copy"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[element2]" mode="copy">
<xsl:copy>
<xsl:apply-templates select="*[not(*)]" mode="copy"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@*|node()" mode="copy">
<xsl:copy>
<xsl:apply-templates select="@*|node()" mode="copy"/>
</xsl:copy>
</xsl:template>
上述XSLT選擇<element2>
= Fruits條件應用於的節點中的所有元素。現在,我需要選擇每個過濾節點(<Host>, <NodeA>, <NodeB>, <NodeC>, <NodeE>)
中的特定元素 - 例如,對於每個節點,我的元素範圍從至。現在我只想從篩選節點(<Host>, <NodeA>, <NodeB>, <NodeC>, <NodeE>)
中選擇。預期的輸出格式如下。下面給出的每個節點的兩個值來自於每個節點。
<html>
<head>
<body>
<table border="1">
<tr>
<td>type0</td>
<td>Price0</td>
</tr>
<td>type1</td>
<td>Price1</td>
</tr>
<tr>
<td>type2</td>
<td>Price2</td>
</tr>
<tr>
<td>type3</td>
<td>Price3</td>
</tr>
<tr>
<td>type5</td>
<td>Price5</td>
</tr>
</table>
</body>
</head>
</html>
任何幫助將是一個很大的優點。
哪裏是'Node0'在輸出從何而來?它不在輸入或XSLT中。此外,_「現在我需要選擇每個節點中的特定元素。」_這是什麼意思?這似乎是你的問題的關鍵,它並沒有告訴我們任何有用的東西。 – JLRishe
您可以在問題中看到更改 –
您已完全更改輸出,但尚未澄清您的問題。請_explain_你想做什麼。您也可以通過描述一個例子來解釋,例如「我想將X更改爲Y並將M更改爲N並僅包含U和V」。 – JLRishe