如何修剪XSLT使用属性表达式

时间:2014-11-03 12:02:48

标签: xslt xpath

我是XSLT的新手,我有特殊要求。我的XML文件如下所示。

<results>
  <result>
    <Price>
      <LinePrices>
        <ProductId>ProductId:1000</ProductId>
        <Uom>KG</Uom>
        <Quantity>0</Quantity>
      </LinePrices>

      <LinePrices>
        <ProductId>ProductId:1002</ProductId>
        <Uom>EACH</Uom>
        <Quantity>0</Quantity>
      </LinePrices>
    </Price>
  </result>

  <result>
    <productlist>
      <productid>1000</productid>
      <relevance>0.9</relevance>
      <sponsored>0</sponsored>
    </productlist>
    <productlist>
      <productid>1001</productid>
      <relevance>0.8</relevance>
      <sponsored>0</sponsored>
    </productlist>
  </result>
</results>

我必须编写XSLT键来匹配模式。我已经为产品清单写了密钥,如下所示。

<xsl:key name="productsIdForProduct" match="productlist" use="productid" />

以类似的方式,我试图为LinePrices写密钥,如下所示。

<xsl:key name="productsIdPrice" match="result/LinePrices" use="ProductId" />

然而,这会返回&lt; ProductId:1000&#39;在使用属性。我正试图修剪ProductId:&#39;来自use属性值。如何编写修剪表达式以提取&#39; 1000&#39;来自&lt; ProductId:1000&#39;在XPATH表达式中?

1 个答案:

答案 0 :(得分:2)

只需使用substring-after():

 substring-after(ProductId,':')