我正在使用xslt 2.0和replace-function。我的任務是用結構來替換一個字串的一部分。 例子
輸入:
<xml>
<content>標題1:這將是一個新行</content>
</xml>/span>
輸出:
<xml>
<content>Title 1: </content><content> 這將是一個新的行</content>。
</xml>/span>
根據xslt 2.0,我不允許在替換字串中使用<或>。 如果我使用<或>,也會被輸出。
我使用的xslt有點像這樣:
<xsl:value-of select="replace( . , '(.*)s (.*)', $1</content><content>2"/>
uj5u.com熱心網友回復:
AFAICT,你要做的很簡單:
<xsl:template match="content">
<xsl:analyze-string select=" 。 " regex="^D*d :s ">
<xsl:匹配-substring>
<content>
<xsl:value-of select="normalize-space(.) "/>
</content>
</xsl:matching-substring>
<xsl:non-matching-substring>
<content>
<xsl:value-of select="."/>
</content>/span>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:template>/span>
演示。https://xsltfiddle.liberty-development.net/nbiE1b5/1
uj5u.com熱心網友回復:
感謝michael-hor257k的評論,我能夠解決這個問題。 我不得不做一些調整,但它確實起作用了。
以下是解決方案。
這是解決方案:
<xsl:analyze-string select=" 。 " regex="(.*)(d )s (.*)">
<xsl:匹配-substring>
<xsl:value-of select="regex-group(1)"/span>/>
<xsl:text> </xsl:text>
<xsl:value-of select="regex-group(2)"/span>/>
<xsl:call-template name="ELEMENT_CONTENT_END"/span>/>
<xsl:call-template name="ELEMENT_BR"/span>/>
<xsl:call-template name="ELEMENT_CONTENT_START"/span>/>
<xsl:value-of select="regex-group(3)"/span>/>
</xsl:匹配-substring>
<xsl:non-matching-substring>
<xsl:value-of select="normalize-space(.) "/>
</xsl:non-matching-substring>
</xsl:analyze-string>/span>
ELEMENT_CONTENT_START和ELEMENT_CONTENT_START的定義如下:
<xsl:template name="ELEMENT_CONTENT_END">
<xsl: text disable-output-escaping="yes">& lt; /content> </xsl。 text>
</xsl:模板>
<xsl:template name="ELEMENT_CONTENT_START"/span>>
<xsl: text disable-output-escaping="yes">& lt; content> </xsl。 text>
</xsl:template>/span>
謝謝你的寶貴建議,邁克爾!
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/307716.html
標籤:
