我有一个<fraction d="2" n="1">
标记的文件。我需要将其转换为½
我尝试用它来做:
<xsl:template match="fraction">
<xsl:text>&frac</xsl:text>
<xsl:value-of select="@n"/>
<xsl:value-of select="@d"/>
<xsl:text>;</xsl:text>
</xsl:template>
但我收到错误 - 可能是由于引用&amp; frac
答案 0 :(得分:2)
这似乎对我有用(xslt 1.0):
<xsl:template match="/">
<xsl:text disable-output-escaping="yes">&frac</xsl:text>
<xsl:value-of select="@n"/>
<xsl:value-of select="@d"/>
<xsl:text>;</xsl:text>
</xsl:template>
答案 1 :(得分:1)
不需要DOE (以及 its use isn't just bad taste !):
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:my="my:my">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<my:fractions>
<frac14>¼</frac14>
<frac12>½</frac12>
<frac34>¾</frac34>
<frac18>⅛</frac18>
<frac38>⅜</frac38>
<frac58>⅝</frac58>
<frac78>⅞</frac78>
</my:fractions>
<xsl:variable name="vFracs" select="document('')/*/my:fractions/*"/>
<xsl:template match="fraction">
<xsl:value-of select="$vFracs[name()= concat('frac', current()/@n, current()/@d)]"/>
</xsl:template>
</xsl:stylesheet>
在提供的XML文档上应用此转换时:
<fraction d="2" n="1"/>
产生了想要的正确结果:
½