1

我有一个带有<fraction d="2" n="1">标签的文件。我需要将其转换为&frac12;我尝试这样做:

<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>

但我收到一个错误 - 可能是由于引用 &frac

4

2 回答 2

2

这似乎对我有用(xslt 1.0):

<xsl:template match="/">
  <xsl:text disable-output-escaping="yes">&amp;frac</xsl:text>
  <xsl:value-of select="@n"/>
  <xsl:value-of select="@d"/>
  <xsl:text>;</xsl:text>
</xsl:template>
于 2013-03-27T19:42:23.970 回答
1

不需要 DOE(而且它的使用不仅仅是不好的味道!):

<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>&#188;</frac14>
  <frac12>&#189;</frac12>
  <frac34>&#190;</frac34>
  <frac18>&#8539;</frac18>
  <frac38>&#8540;</frac38>
  <frac58>&#8541;</frac58>
  <frac78>&#8542;</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"/>

产生了想要的正确结果:

½
于 2013-03-28T02:17:16.247 回答