<p>
おばあさんは、とても
<ruby><rb>喜</rb><rp>(</rp><rt>よろこ</rt><rp>)</rp></ruby>びました。<br/>
「おじいさん、
<ruby><rb>今</rb><rp>(</rp><rt>こん</rt><rp>)</rp></ruby>
<ruby><rb>晩</rb><rp>(</rp><rt>ばん</rt><rp>)</rp></ruby>、このたぬきで、たぬき
</p>
期望的输出
おばあさんは、とても<ruby=よろこ>喜</ruby>びました。<br/>
「おじいさん、
<ruby=こん>今</ruby><ruby=ばん>晩</ruby>、このたぬきで、たぬき
我需要将很多页面的文本转换为此专有标记。
这里是我开始的,但它远没有工作,因为我正在努力处理ruby标签之外的文本。这一直是XSLT的难点吗?
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" indent="yes"/>
<xsl:template match="/p">
<xsl:text disable-output-escaping="yes"><p></xsl:text>
<xsl:value-of select="."/>
<xsl:apply-templates select="ruby"/>
<xsl:text disable-output-escaping="yes"></p></xsl:text>
</xsl:template>
<xsl:template match="ruby">
<xsl:apply-templates select="rb"/>
<xsl:apply-templates select="rt"/>
</xsl:template>
<xsl:template match="rb">
<xsl:value-of select="."/>
<xsl:text></ruby></xsl:text>
</xsl:template>
<xsl:template match="rt">
<xsl:text><ruby=</xsl:text>
<xsl:value-of select="."/>
<xsl:text>></xsl:text>
</xsl:template>
</xsl:stylesheet>
更新
啊我看到故事的一部分要用priority
<xsl:template match="/p" priority="0">
<xsl:text disable-output-escaping="yes"><p></xsl:text>
<xsl:apply-templates/>
<xsl:apply-templates select="ruby"/>
<xsl:text disable-output-escaping="yes"></p></xsl:text>
</xsl:template>
需要优先考虑以确保它不会在模板匹配之前得到应用&#34; ruby&#34;和&#34; rt&#34;例如。
答案 0 :(得分:1)
解决了它
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" indent="yes"/>
<xsl:template match="/p" priority="0">
<xsl:text><p></xsl:text>
<xsl:apply-templates/>
<xsl:text></p></xsl:text>
</xsl:template>
<xsl:template match="ruby">
<xsl:text><ruby=</xsl:text>
<xsl:apply-templates select="rt"/>
<xsl:text>></xsl:text>
<xsl:apply-templates select="rb"/>
<xsl:text></ruby></xsl:text>
</xsl:template>
<xsl:template match="rb">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="rt">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="br">
<xsl:text><br/></xsl:text>
</xsl:template>
</xsl:stylesheet>