我使用xslt1.0.This轉換HTML到XML是我的HTML片段:轉換hexacode在HTML到XML
<span style="font-family: Wingdings;>
</span>
我的輸出應該是,
<w:sym w:font="Wingdings" w:char="F0D8"/>
是否有可能在xslt中使用它或使用java.How來標識跨度內的字符代碼?由於事先..
我使用xslt1.0.This轉換HTML到XML是我的HTML片段:轉換hexacode在HTML到XML
<span style="font-family: Wingdings;>
</span>
我的輸出應該是,
<w:sym w:font="Wingdings" w:char="F0D8"/>
是否有可能在xslt中使用它或使用java.How來標識跨度內的字符代碼?由於事先..
該XSLT 2.0溶液:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:my="my:my">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/*">
<xsl:value-of select=
"my:dec-to-hex(string-to-codepoints(normalize-space()))"/>
</xsl:template>
<xsl:variable name="vHexDigits" select="'ABCDEF'"/>
<xsl:function name="my:dec-to-hex" as="xs:string">
<xsl:param name="pDec" as="xs:integer"/>
<xsl:variable name="vQuot" select="$pDec idiv 16"/>
<xsl:variable name="vRemainder" select="$pDec mod 16"/>
<xsl:sequence select=
"if($pDec lt 16)
then substring($vHexDigits, $pDec+1, 1)
else
concat(my:dec-to-hex($vQuot),
substring($vHexDigits, $vRemainder+1, 1)
)
"/>
</xsl:function>
</xsl:stylesheet>
當施加到所提供的XML文檔:
<span style="font-family: Wingdings;"> </span>
產生完全相同的通緝十六進制表示:
F0D8
Thanks.But我怎麼做或修改在xslt1.0中工作。我如何從xslt1.0遷移到xslt2.0? – vignesh 2011-04-14 14:07:01
+1正確答案。 – 2011-04-14 14:33:17
@vignesh:XSLT 1.0解決方案需要將UNICODE字符映射到代碼點的外部源。我認爲有一個已經建立了一些地方... – 2011-04-14 14:35:32
好問題,+1。查看我的答案以獲取完整的XSLT 2.0解決方案。 – 2011-04-14 13:54:51