XSLT встроенные теги XSL в выход? - PullRequest
2 голосов
/ 27 июня 2011

У меня есть вход:

<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: на текст, если это возможно, потому что этот вывод является частью всей страницы HTML, поэтому я хотел бы сохранить вывод в HTML)

Заранее спасибо людям.

Эмм да XSLT 1.0.

1 Ответ

1 голос
/ 27 июня 2011

Я думаю, что вы использовали "/" там, где вы хотели "\".

Почти все из того, что вы описали, будет выполнено автоматически сериализатором XSLT. Единственное исключение - когда вам нужно ввести экранирование JSON, например экранирование " как \". Как и все манипуляции со строками, в XSLT 1.0 это примерно в 10 раз сложнее, чем в 2.0, но, к счастью, код уже написан: посмотрите на str:replace на www.exslt.org для многоразового шаблона, который вы можете добавить к своему коду выполнить замену строки.

...