Java 将html中的六进制代码转换为xml
我正在使用xslt1.0将html转换为xml。这是我的html的一个片段:Java 将html中的六进制代码转换为xml,java,xslt,xslt-2.0,Java,Xslt,Xslt 2.0,我正在使用xslt1.0将html转换为xml。这是我的html的一个片段: <span style="font-family: Wingdings;> </span> 此XSLT 2.0解决方案: <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchem
<span style="font-family: Wingdings;>
</span>
此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="'0123456789ABCDEF'"/>
<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>
好问题,+1。有关完整的XSLT2.0解决方案,请参见我的答案。谢谢。但是,我如何做或修改才能在xslt1.0中工作呢。如何从xslt1.0迁移到xslt2.0?@vignesh:xslt1.0解决方案需要外部源代码将UNICODE字符映射到代码点。我想有一个已经建了一些地方…一些地方意味着什么?。很抱歉,我没听清楚。@Alejandro:我不希望它是一个单一的整体文件,如果他们有这些XML格式的映射,我会感到惊讶(很高兴)。
<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="'0123456789ABCDEF'"/>
<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>
<span style="font-family: Wingdings;"> </span>
F0D8