1
是否可以使xsl:analyze-string
返回一個字符串而不是sequence的字符串?XSLT - 使xsl:analyze-string返回字符串而不是字符串序列?
背景:我想在xsl:function
中使用xsl:analyze-string
,它應該封裝模式匹配。理想情況下,該函數應該返回一個xs:string
作爲xsl:sort
元素中的排序條件。
目前,我需要去申請字符串連接()的函數調用的每一個結果,因爲xsl:analyze-string
返回一個字符串的序列,並xsl:sort
不接受這樣的順序排序標準。看到樣式表的線24:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:my="www.my-personal-namespa.ce"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output indent="yes" method="xml" />
<xsl:function name="my:sortierung" >
<xsl:param name="inputstring" as="xs:string"/>
<xsl:analyze-string select="$inputstring" regex="[0-9]+">
<xsl:matching-substring>
<xsl:value-of select="format-number(number(.), '00000')" />
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="." />
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:function>
<xsl:template match="/input">
<result>
<xsl:apply-templates select="value" >
<xsl:sort select="string-join((my:sortierung(.)), ' ')" />
</xsl:apply-templates>
</result>
</xsl:template>
<xsl:template match="value">
<xsl:copy-of select="." />
</xsl:template>
</xsl:stylesheet>
與該輸入:
<?xml version="1.0" encoding="UTF-8"?>
<input>
<value>A 1 b 120</value>
<value>A 1 b 1</value>
<value>A 1 b 2</value>
<value>A 1 b 1a</value>
</input>
在我的例子,是有辦法修改了xsl:函數返回的xs:字符串,而不是一個序列?
非常感謝,完美的作品! – tohuwawohu 2012-03-22 12:57:24