1

次の XML があります。

<response>
  <propertySearchSales>                                                                           
     <properties rentalperiod="0"><pages page="1" count="153" pageCount="16" perPage="10">
        <pages page="1" count="153" pageCount="16" perPage="10">
          <page number="1" selected="true"/>

次の xslt コードを使用して、ページ番号属性値にアクセスしようとしています。

<xsl:if test="//response//propertySearchSales//properties/pages/@number>1">

しかし、それは機能していません。何が間違っていますか? ありがとう

4

4 に答える 4

1

次の xslt コードを使用して、ページ番号属性値にアクセスしようとしています。

<xsl:if test="//response//propertySearchSales//properties/pages/@number>1">

xsl:if命令はどのノードにも「アクセス」しません。条件true()またはfalse()

条件を満たすノードを選択する Xpath 式には、 predicate内に条件があります。

したがって、上記の XPath 式を次のように変更する必要があります。

(ExpressionSelectingNodes)[//response//propertySearchSales//properties/pages/@number>1]

他の人が気づいたように、提供された XML ドキュメントの要素には属性pagesがありませんnumber

したがって、ほとんどの場合、次のような式が必要になります。

(ExpressionSelectingNodes)[//response//propertySearchSales//properties/pages/page/@number>1]

数値として扱われる属性の文字列値が数値 1 より大きい任意pageのを選択する必要がある場合numberは、次を使用します。

//response//propertySearchSales//properties/pages/page/[@number>1]

最後に、提供された XML ドキュメントに基づいて、上記の式を次のように最適化できます。

/response/propertySearchSales/properties/pages/page/[@number>1]
于 2012-08-08T12:23:43.600 に答える
0

pagesサンプルXMLが正しい場合は、の子要素があるため、XPathが間違っていますpages

提供されたXMLの場合、これは機能するはずです。

<xsl:if test="//response/propertySearchSales/properties/pages/pages/page[@number>1]">

追加のpages要素が間違いである場合は、これを試してください。

<xsl:if test="//response/propertySearchSales/properties/pages/page[@number>1]">
于 2012-08-08T11:32:07.903 に答える
0

これを試して

/response/propertySearchSales/properties/pages/page[@number>1]
于 2012-08-08T11:27:30.477 に答える
0

簡単な方法は

<xsl:if test="//page[@number>1]">
于 2012-08-09T03:51:31.053 に答える