2009-07-16 200 views
0

這裏是我的結構:XPath來選擇特定的兒童與兒童父母

<AllCharges> 
    <Charge> 
    <ID>1</ID> 
    <Type>A</Type> 
    </Charge> 
    <Charge> 
    <ID>2</ID> 
    <Type>A</Type> 
    </Charge> 
    <Charge> 
    <ID>3</ID> 
    <Type>B</Type> 
    </Charge> 
</AllCharges> 

什麼,我想回去是完整的結構,但我只想要結果,其中類型= A.困難的部分我發現正在拉回父母xml節點。這裏是我的結果應該是什麼樣子的例子:

<AllCharges> 
    <Charge> 
    <ID>1</ID> 
    <Type>A</Type> 
    </Charge> 
    <Charge> 
    <ID>2</ID> 
    <Type>A</Type> 
    </Charge> 
</AllCharges> 

我將承擔的XPath會是這個樣子,但它不工作: /AllCharges [//類型= A]

這可能嗎?

回答

4
/AllCharges/Charge[Type='A'] 

應該這樣做。

該表達式讀取「選擇任何父元素爲AllCharges的Charge元素,並具有名爲Type的文本值爲'A'的子元素。

測試了它在下面的XSLT模板:

<xsl:template match="/"> 
    <AllCharges> 
    <xsl:copy-of select="/AllCharges/Charge[Type='A']"/> 
    </AllCharges> 
</xsl:template> 

輸出爲:

<AllCharges> 
    <Charge> 
    <ID>1</ID> 
    <Type>A</Type> 
    </Charge> 
    <Charge> 
    <ID>2</ID> 
    <Type>A</Type> 
    </Charge> 
</AllCharges> 
+1

嗯,這是多於一個的XPath XSLT溶液。 – mkoeller 2009-07-16 14:33:20

2

xpath不會更改XML,它只是返回XML文檔中的結果。您可以搜索type = a的所有'charge'元素以獲得您想要的內容。

如果您要變換的文件,你需要看看XSL