xslt嵌入的xsl标签在转义中?

时间:2011-06-27 06:48:01

标签: xml xslt xslt-1.0

我有输入:

<r>
<n>Russel</n>
<i>333</i>
</r>

这是我想要的最终输出:

<section data-a="{
    name:&quot;Russel&quot;,
    id:333
}"></section>

这不是我想要的输出,例如:

<section data-a="{
    name:'Russel',
    id:333
}"></section>

因为当名称本身有引号时,JSON反序列化函数会失败。例如,如果名称为Rus"sel,则这是我需要的输出:

<section data-a="{
    name:&quot;Rus/&quot;sel&quot;,
    id:333
}"></section>

如果名称为',则为输出:

<section data-a="{
    name:&quot;'&quot;,
    id:333
}"></section>

如果名称为/,则为输出:

<section data-a="{
    name:&quot;//&quot;,
    id:333
}"></section>

如果名称为&,则为输出:

<section data-a="{
    name:&quot;&amp;&quot;,
    id:333
}"></section>

如果名称为&asd,则为输出:

<section data-a="{
    name:&quot;&amp;asd&quot;,
    id:333
}"></section>

如果名称为&amp;,则为输出:

<section data-a="{
    name:&quot;&amp;amp;&quot;,
    id:333
}"></section>

如果名称为R/u/"/s,则为输出:

<section data-a="{
    name:&quot;R//u///&quot;//s&quot;,
    id:333
}"></section>

如果名称为R&//",则为输出:

<section data-a="{
    name:&quot;R&amp;/////&quot;&quot;,
    id:333
}"></section>

(我想说的是,通常我没有名字和身份证,有时我会有6或7个属性)

(另外,如果可能的话,我希望不要将我的xsl:output更改为文本,因为此输出是整个HTML页面的一部分,因此我希望将输出保持为HTML)

先谢谢大家。

Erm yea XSLT 1.0。

1 个答案:

答案 0 :(得分:1)

我认为您在“/”的位置使用了“/”。

几乎所有描述的内容都将由XSLT序列化程序自动完成。唯一的例外是您需要引入JSON转义,例如将"转义为\"。与所有字符串操作一样,这在XSLT 1.0中比在2.0中大10倍,但幸运的是代码已经编写:请查看www.exslt.org上的str:replace以获取可添加到您的可重用模板用于执行字符串替换的代码。