试图找到XPATH

时间:2017-06-20 18:32:36

标签: xml xslt xpath soap

我试图找到< lucidId'的xpath。在这个SOAP返回中:

 <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://media.com/entities/lpedition" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <SOAP-ENV:Body>
       <ns1:detailFromPublicationDateResponse>
          <return SOAP-ENC:arrayType="ns1:Edition[2]" xsi:type="ns1:EditionArray">
             <item id="5267" status="" adsBundleStatus="" adsBundleSizeInBytes="" adsBundleUrl="" xsi:type="ns1:Edition" xmlns="http://lapresse.ca/entities/lpedition">
                <name>ARTS CINÉMA</name>
                <publishedAt>20170603</publishedAt>
                <sections>
                   <section id="22556" type="CAT" rank="1">
                      <typeCode>REG</typeCode>
                      <color>008591</color>
                      <name>ARTS CINÉMA</name>
                      <pages>
                         <page id="66972270" lucidId="3d84e764-c507-4f07-82c3-c6f9cab588eb|_0" pageNumberForEdition="" pageNumberForSection="1" type="" adsBundleStatus="" adsBundleSizeInBytes="0" adsBundleUrl="">
                            <navThumbnail url="http://lp-bo.lapresse.ca/api/5267/d8eb9c12f7b449dd80bf852832638ed7/thumbnail-nav">
                               <title>À la une</title>
                               <subTitle>ARTS</subTitle>
                            </navThumbnail>
                            <screenCapture url="http://lp-bo.lapresse.ca/api/5267/d8eb9c12f7b449dd80bf852832638ed7/thumbnail?lucidRank=0"/>
                            <ads/>
                            <pages/>
                            <articles/>
                            <slideshows/>
                         </page>

一旦我回复&#39;在我的xpath中,我没有得到任何东西

 /SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:detailFromPublicationDateResponse/return

我尝试过各种xpath测试仪,但我没有得到任何东西...... 是否必须对阵列做任何事情?

当我这样做时,它确实适用于xpath://pages/page/@lucidId 但在我的XSL文件中,我无法绕过return

这就是我想要做的事情:

 <xsl:template match="/SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:detailFromPublicationDateResponse/return">
  <xsl:for-each select="item/sections/section/pages/page">
     <xsl:value-of select="@lucidId"/><xsl:text>;</xsl:text>

2 个答案:

答案 0 :(得分:0)

item以下的所有内容都位于默认命名空间http://lapresse.ca/entities/lpedition中。

尝试将该命名空间绑定到XSLT中的前缀,并在xpath中使用它。

在下面的示例中,我将命名空间绑定到前缀lp

XSLT 1.0

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:ns1="http://media.com/entities/lpedition"
  xmlns:lp="http://lapresse.ca/entities/lpedition"
  exclude-result-prefixes="SOAP-ENV ns1 lp">
  <xsl:output indent="yes" omit-xml-declaration="yes"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="/SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:detailFromPublicationDateResponse/return">
    <xsl:for-each select="lp:item/lp:sections/lp:section/lp:pages/lp:page">
      <xsl:value-of select="@lucidId"/><xsl:text>;</xsl:text>
    </xsl:for-each>
  </xsl:template>

</xsl:stylesheet>

<强>输出

3d84e764-c507-4f07-82c3-c6f9cab588eb|_0;

答案 1 :(得分:-1)

/*[local-name()='Envelope']/*[local-name()='Body']/*[local-name()='detailFromPublicationDateResponse']/*[local-name()='return']/*[local-name()='item']/*[local-name()='sections']/*[local-name()='section']/*[local-name()='pages']/*[local-name()='page']/@lucidId

或只是

//*[local-name()='pages']/*[local-name()='page']/@lucidId