輸入:"abcdef$ghi$jklmno$pqrst$ wx $yx$"
提取字符串1.0
預期輸出:
<tokens>
<token>$ghi$</token>
<token>$pqrst</token>
<token>$yx$</token>
</tokens>
作爲每個樣品的輸入字符串,輸出必須像預期輸出通過使用XSLT 1.0
在前提前
輸入:"abcdef$ghi$jklmno$pqrst$ wx $yx$"
提取字符串1.0
預期輸出:
<tokens>
<token>$ghi$</token>
<token>$pqrst</token>
<token>$yx$</token>
</tokens>
作爲每個樣品的輸入字符串,輸出必須像預期輸出通過使用XSLT 1.0
在前提前
對於每一對美元符號(1,2),(3,4),...(2 × n - 1,2 × ñ)你想與美元符號數2 × ñ文本令牌元素 - 1和美元符號數2 ñ。
其中一個案件將必然適用。案例1:有一些固定的最大值n,它比較小(比如小於5或10)。在這種情況下,xs:variable
指配的簡單順序可以適當地調用substring-before
和substring-after
就足夠了,就完成了。第一個美元符號後
案例2:沒有最大值n。在這種情況下,XSLT 1中的直接方法。(b)構造一個包含美元符號的元素,第一個美元符號之後和第二個美元符號之前的字符串,以及(c)調用本身在第二個美元符號之後遞歸地與子串進行遞歸。爲空字符串,帶有奇數美元符號的字符串和其他輸入錯誤添加適當的邊界條件,就完成了。
因此:請閱讀XSLT 1.0的字符串函數並解決您的問題。如果你有進一步的麻煩,請回來(並展示你的工作)。
希望下面的xsl幫助你。有用。我自己試了一下。
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes"/>
<xsl:template match="/">
<xsl:variable name="input">
<xsl:text>abcdef$ghi$jklmno$pqrst$ wx$yx$</xsl:text>
</xsl:variable>
<tokens>
<xsl:text> </xsl:text>
<xsl:analyze-string select="$input" regex="(\$[a-z]+\$)">
<xsl:matching-substring>
<token>
<xsl:value-of select="regex-group(1)"/>
</token>
<xsl:text> </xsl:text>
</xsl:matching-substring>
</xsl:analyze-string>
</tokens>
</xsl:template>
</xsl:stylesheet>
感謝凱特,但我們必須使用XSLT 1.0來做,如果我沒有錯,那麼你的解決方案是在XSLT 2.0 – user1904426
@ user1904426 - 是的,對。 – Linda
請*親切*張貼代碼告訴我們你已經嘗試過。 –