Ich versuche mit einer Funktion sämtliche Zahlen aus einem Element oder String zu ermitteln。Dabei soll die Anzahl der Zahlen und ihre Stelligkeit egal sein。Folgende Funktion habe ich bislang geschrieben:
<xsl:function name="itp:find_num">
<xsl:param name="tmp"/>
<xsl:if test="matches($tmp,'\d+')">
<xsl:analyze-string select="$tmp" regex="{'\d+'}">
<xsl:matching-substring>
<xsl:sequence select="."/>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="''"/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:if>
</xsl:function>
贝斯皮尔 XML:
<address>street 12, 12345 town<address>
Bei dem Funktionsaufruf soll dann die entsprechende Zahl ausgewählt werden können:
...select="itp:find_num(address)[2]"/>
Zum Beispiel die 2 für die Postleitzahl。Das Problem ist nun, dass in der Sequence auch leere Werte stehen, so dass ich in der Praxis die Postleitzahl nur mit [4] erreiche。
Gibt es eine beautifulere Möglichkeit meine Problem zu lösen?Und wenn nicht, wie lösche ich die leeren Elemente aus der Sequence??
现在用英语:-)
我正在尝试在元素 oder 字符串中查找所有数字。有多少可用数字或它们在字符串中的哪个位置都无关紧要。
这是我的功能:
<xsl:function name="itp:find_num">
<xsl:param name="tmp"/>
<xsl:if test="matches($tmp,'\d+')">
<xsl:analyze-string select="$tmp" regex="{'\d+'}">
<xsl:matching-substring>
<xsl:if test=". != ''">
<xsl:sequence select="."/>
</xsl:if>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="''"/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:if>
</xsl:function>
示例 XML
<address>street 12, 12345 town<address>
当我调用我想选择的函数时,我想选择哪个号码:
...select="itp:find_num(address)[2]"/>
邮政编码的示例 [2]。我遇到的问题是,序列中有空元素,所以我必须选择 [4] 来获取邮政编码。
有没有更简单的方法来解决我的问题?或者有没有办法删除该序列中的所有空元素?
谢谢 :-)