通过XPATH获取标签的值

时间:2013-07-24 11:02:51

标签: xml xslt xpath

我对XSLT有疑问。我正在尝试通过XPATH获取标签的值,但我不知道我该怎么做。

我正在尝试使用此XPTAH:

<xsl:copy-of select="/vpf:Msg/vpf:Body/vpf:Payload[./@Role=&apos;C&apos; and ./@id=&apos;atom1&apos;]/*/Table1/Nombre">

但这是不可能的。

我也试过代码:

<xsl:copy-of select="/vpf:Msg/vpf:Body/vpf:Payload[./@Role=&apos;C&apos; and ./@id=&apos;atom1&apos;]/DescargarFicheroPendienteResponse/DescargarFicheroPendienteResult/Table1/Nombre">

我认为问题是标签:

这是示例XML:

<Payload Role="C" id="atom1" statusNo="0" statusMsg="success" reference="atom2" payload="atom2" calltype="solicit response (call/reply)" adapter="WSAS">  
    <http.header>  
        <http.header.info id="X-AspNet-Version" value="2.0.50727"/>  
        <http.header.info id="Date" value="Wed, 24 Jul 2013 10:23:53 GMT"/>  
        <http.header.info id="Content-Length" value="494"/>  
        <http.header.info id="MicrosoftOfficeWebServer" value="5.0_Pub"/>  
        <http.header.info id="Content-Type" value="text/xml; charset=utf-8"/>  
        <http.header.info id="Server" value="Microsoft-IIS/6.0"/>  
        <http.header.info id="X-Powered-By" value="ASP.NET"/>  
        <http.header.info id="Cache-Control" value="private, max-age=0"/>  
    </http.header>  
    <DescargarFicheroPendienteResponse xmlns="http://tempuri.org/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
        <DescargarFicheroPendienteResult>  
            <NewDataSet xmlns="">  
                <Table1>  
                    <Nombre>0</Nombre>  
                    <Contenido/>  
                </Table1>  
            </NewDataSet>  
        </DescargarFicheroPendienteResult>  
    </DescargarFicheroPendienteResponse>  
</Payload>  

任何人都可以帮助我吗?

由于

1 个答案:

答案 0 :(得分:1)

在XML中给出了这个:

<DescargarFicheroPendienteResponse xmlns="http://tempuri.org/" ....>  
    <DescargarFicheroPendienteResult>  
        <NewDataSet xmlns="">
            <Table1>  

XPath表达式

vpf:Payload[....]/DescargarFicheroPendienteResponse/
   DescargarFicheroPendienteResult/Table1/Nombre

肯定不会起作用 - 首先,在XML中,DescargarFicheroPendienteResponseDescargarFicheroPendienteResult元素位于http://tempuri.org/命名空间中,因此您需要将其映射到样式表中的前缀(例如xmlns:t="http://tempuri.org/")然后在XPath中使用该前缀,其次在NewDataSet上方有一个Table1元素。

vpf:Payload[....]/t:DescargarFicheroPendienteResponse/
    t:DescargarFicheroPendienteResult/NewDataSet/Table1/Nombre