我有一个JSON文件,其中也包含HTML标记
{
"process": "Test",
"title": "Json2XML_Conversion",
"content": "<div id=\"contents\"><p class=\"Head\">This need to process as title</p><p class=\"para\">This is child text</p></div>"
}
字符串
我在XSLT中处理了这个问题,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="3.0">
<xsl:output indent="yes"></xsl:output>
<xsl:variable name="text" select="unparsed-text('JsonFile.json', 'UTF-8')"/>
<xsl:template match="/">
<xsl:message select="$text"></xsl:message>
<xsl:variable name="XML">
<xsl:apply-templates select="json-to-xml($text)" mode="copy"/>
</xsl:variable>
<Root><xsl:apply-templates select="$XML" mode="ContentTest"/></Root>
</xsl:template>
<xsl:template match="*[@key]" mode="copy">
<xsl:element name="{@key}">
<xsl:choose>
<xsl:when test="@key = 'content'">
<xsl:value-of select="." disable-output-escaping="yes"/>
</xsl:when>
<xsl:otherwise><xsl:apply-templates mode="copy"/></xsl:otherwise>
</xsl:choose>
</xsl:element>
</xsl:template>
<xsl:mode on-no-match="shallow-copy" name="ContentTest"/>
<xsl:template match="div" mode="ContentTest">
<RootElementforContent>
<xsl:apply-templates mode="#current"/>
</RootElementforContent>
</xsl:template>
</xsl:stylesheet>
型
电流输出:
<Root>
<process>Test</process>
<title>Json2XML_Conversion</title>
<content><div id="contents"><p class="Head">This need to process as title</p><p class="para">This is child text</p></div></content>
</Root>
型
所需输出:
<Root>
<process>Test</process>
<title>Json2XML_Conversion</title>
<content><RootElementforContent><p class="Head">This need to process as title</p><p class="para">This is child text</p></RootElementforContent></content>
</Root>
型
这是一个示例输入和输出,我有完整的HTML结构在原始文本中,所以需要检查,它可以在单XSLT中处理。
1条答案
按热度按时间1rhkuytd1#
这样就得到了https://martin-honnen.github.io/xslt3fiddle/中的输出
字符串
产生
型