Я пытаюсь преобразовать XML в HTML, и некоторый элемент HTML должен содержать JSON текст в качестве значения атрибута, преобразованного из XML. но при преобразовании я не могу получить правильный вывод для JSON в атрибуте, помогите мне в этом путать из-за ", который является двойной кавычкой
XML:
<?xml version="1.0" encoding="UTF-8"?>
<main>
<sub id="1" name="A" owner="XXX">text</sub>
<sub id="2" name="B" owner="yyy">text</sub>
</main>
XSLT
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="3.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<p>
<xsl:for-each select="main/sub">
<span>
<xsl:attribute name="json">
<xsl:text>{"properties" : [ {</xsl:text>
<xsl:for-each select="./@*">
<xsl:if test="name() = 'id'"><xsl:text>"id" : "</xsl:text><xsl:value-of select="." /><xsl:text>",</xsl:text></xsl:if>
<xsl:if test="name() = 'name'"><xsl:text>"name" : "</xsl:text><xsl:value-of select="." /><xsl:text>",</xsl:text></xsl:if>
<xsl:if test="name() = 'owner'"><xsl:text>"owner" : "</xsl:text><xsl:value-of select="." /><xsl:text>"</xsl:text></xsl:if>
</xsl:for-each>
<xsl:text>} ] }</xsl:text>
</xsl:attribute>
</span>
</xsl:for-each>
</p>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Фактический результат:
<html>
<body>
<p><span json="{"properties" : [ {"id" : "1","name" : "A","owner" : "XXX"} ] }"></span><span json="{"properties" : [ {"id" : "2","name" : "B","owner" : "yyy"} ] }"></span></p>
</body>
</html>
Ожидаемый результат
<html>
<body>
<p><span json="{"properties" : [ {"id" : "1","name" : "A","owner" : "XXX"} ] }"></span><span json="{"properties" : [ {"id" : "2","name" : "B","owner" : "yyy"} ] }"></span></p>
</body>
</html>