卡住了,需要諮詢。恐怕不是XSLT的專家。<xsl:apply templates>如何應用多個模板/翻譯
我有這個示例XML:
<?xml version="1.0" encoding="UTF-8"?>
<a>
<b key="x"/>
<b key="y"> text></b>
<b key="z"><p>This contains HTML Code.<br/><br/>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. <br/><br/>At vero eos et accusam et justo duo dolores et ea rebum. <br/>///<br/>///Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.///<br/> Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. <br/>At vero eos et accusam et justo duo dolores et ea rebum. <br/>Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p></b>
</a>
我需要輸出的"/a[1]/b[@key='z']"
內容,改造所有<p></p>
- 和所有<br/>
-blocks到UNIX換行符

/
。同時確保輸出代碼沒有/
或|
或\
或&0x9;
(水平標籤)類型的字符。
全部/|\
字符應被連字符-
取代,並且所有水平製表符應完全刪除。
這是我目前的XSL:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/">
<xsl:variable name="foo" select="/a[1]/b[@key='z']" />
<xsl:apply-templates select="$foo" />
</xsl:template>
<xsl:template match="/a[1]/b[@key='z']">
<xsl:value-of select="translate(.,'/\|	', '---')"/>
<xsl:apply-templates />
</xsl:template>
<xsl:template match="br">
<xsl:text>
</xsl:text>
</xsl:template>
</xsl:stylesheet>
我得到確實有兩個結果,一個與替換和一個與換行插入輸出:
<?xml version="1.0" encoding="UTF-8"?>This contains HTML Code.Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. ------Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.--- Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
This contains HTML Code.
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
At vero eos et accusam et justo duo dolores et ea rebum.
///
///Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.///
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
At vero eos et accusam et justo duo dolores et ea rebum.
Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
請,怎麼樣我可以插入換行符和替換不需要的字符嗎?
這就是它!非常感謝Abel打開我的大腦結:-) –
是的,如上所述,'/ | \'字符將被連字符/破折號所替代,並且製表位將被完全刪除,因此缺少的第四個短劃線是故意的。 –
@OliverSträssle,啊,現在明白了,是的,你這麼說。對不起,關於[投票請求](http://stackoverflow.com/help/whats-reputation),我忘了你[需要15個代表](http://stackoverflow.com/help/privileges/vote-up) ,當你的問題或答案被投票後你會得到。 – Abel