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]

正如其他人所注意到的,pages所提供的 XML 文档中的元素没有任何number属性

因此,您很可能需要这样的表达式:

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

如果您需要选择 any page,其number属性的字符串值(被视为数字)大于数字 1,请使用

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

最后,基于提供的 XML 文档,上述表达式可以优化为:

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

试试这个

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

如果您的示例 XML 是正确的,那么您的 XPath 是错误的,因为pages有一个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

简单的方法是

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