2009-07-16 181 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