2010-10-22 70 views
0

我的XML看起來像串長度以找到重複節點的長度

<details> 
    <addr> 
     <streetAddressLine>90822 abc lane</streetAddressLine> 
     <streetAddressLine>apt b</streetAddressLine> 
     <!-- streetAddressLine element is repeatable --> 
     <state>xyz</state> 
    </addr> 
</details> 

我尋找xpath表達式,可以給我字符串長度(streetAddressLine [0])+串長度的長度( streetAddressLine [1])+ ..... +串長度(streetAddressLine [N])

+0

@亞歷杭德羅的解決方案是比你接受了一個好得多。您可以重新考慮並決定接受最佳解決方案。 – 2010-10-24 01:43:27

回答

1
string-length(string-join(/details/addr/streetAddressLine/text(),"")) 
1

現在我們知道你想要的XPath 2.0溶液,此表達式:

sum(/details/addr/streetAddressLine/string-length()) 

結果:

19 

對於XSLT 1.0解決方案,這個樣式表:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/"> 
    <xsl:variable name="vStreetAddressLines"> 
    <xsl:copy-of select="/details/addr/streetAddressLine"/> 
    </xsl:variable> 
    <xsl:value-of select="string-length($vStreetAddressLines)"/> 
</xsl:template> 
</xsl:stylesheet> 

輸出:

19 
+0

很好的答案,+1。我認爲在XPath 2.0中,你需要指定'string-length(。)',而不僅僅是'string-length()' – 2010-10-23 17:00:26