2013-03-27 70 views
1

我有一個帶有<fraction d="2" n="1">標記的文件。我需要將其轉換爲&frac12;我試圖用這個做:xslt轉換部分

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

,但我得到了人爲錯誤的原因可能是引用&壓裂

回答

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

謝謝!我會試試看! – user2183943 2013-03-27 19:53:23

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>&#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"/> 

想要的,正確的結果產生:

½