2014-02-25 104 views
0

XML结构如下。如果Address type =“C”,我需要为变量currentAddress_Street1分配文本。XLST按属性值进行选择

<Addresses> 
    <Address Type="P"> 
     <Street1>220 State Street</Street1> 
     <Street2 /> 
     <City>HATTIESBURG</City> 
     <State>MS</State> 
     <ZipCode>12354</ZipCode> 
     <Country /> 
    </Address> 

    <Address Type="C"> 
     <Street1>1000 </Street1> 
     <Street2 /> 
     <City>Jackson</City> 
     <State>MS</State> 
     <ZipCode>12354</ZipCode> 
     <Country /> 
    </Address> 

下面是我的尝试。 XLST很新颖,有人可以帮助修改它吗?

<xsl:variable name="currentAddress_Street1"> 
<xsl:value-of select="//Addresses/Address/Street1[Address/@Type='C']" /> 
    </xsl:variable> 

回答

0

您正在测试的父节点的属性,所以你必须指定你的谓语,因为它的Street1环境中运行。

//Addresses/Address/Street1[parent::Address/@Type='C'] 
+0

感谢您的快速帮助。 – lonelyloner

2

是可以做到的另一种方式是通过将谓词的Address像这样

//Addresses/Address[@Type='C']/Street1 

正如你可以看到它的更清洁,更容易找出你正在尝试做的。