Trong XPath 2.0 sử dụng một biểu thức duy nhất như này:
sum(../Store/@name/string-length(.))
này không thể được thực hiện với một XPath đơn 1.0 biểu (một chức năng như một bước vị trí không được phép), do đó một số giúp đỡ của ngôn ngữ lưu trữ là cần thiết.
Ví dụ, nếu ngôn ngữ hosting là XSLT:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/*">
<xsl:apply-templates select="Store[@name][1]"/>
</xsl:template>
<xsl:template match="Store[@name]">
<xsl:param name="vAccum" select="0"/>
<xsl:value-of select="$vAccum + string-length(@name)"/>
</xsl:template>
<xsl:template match="Store[@name and following-sibling::Store/@name]">
<xsl:param name="vAccum" select="0"/>
<xsl:apply-templates select="following-sibling::Store[@name][1]">
<xsl:with-param name="vAccum" select="$vAccum + string-length(@name)"/>
</xsl:apply-templates>
</xsl:template>
</xsl:stylesheet>
khi chuyển đổi này được áp dụng trên các tài liệu XML sau:
<root>
<Store name="ab"/>
<Store name="cde"/>
<Store name="fgh"/>
<Store name="ijklmn"/>
<Store name="opr"/>
</root>
các truy nã, kết quả đúng là được sản xuất:
Nguồn
2012-02-28 14:45:55
XML mẫu xin vui lòng .. –
Chúng tôi không biết phần tử 'Store' chứa gì và chứa bao nhiêu thuộc tính ... !! –
Tôi chỉ quan tâm đến độ dài chuỗi của thuộc tính @name. –