XSLT (1.0) Как сохранить HTML-теги при переносе значения элемента в тег CDATA

Вот регулярное выражение, которое будет захватывать то, что находится между коровой и молоком (без начального / конечного пространства):

srctext = "My cow always gives milk.";
var re = /(.*cow\s+)(.*)(\s+milk.*)/;
var newtext = srctext.replace(re, "$2");

Пример: http://jsfiddle.net/entropo/tkP74/

1
задан Morten Dvinge 22 March 2019 в 13:13
поделиться

1 ответ

Спасибо, Тим С https://stackoverflow.com/users/7585/tim-c

Казалось, что я не полностью понял природу value-of решение было довольно близко.

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
 xmlns:onix="http://ns.editeur.org/onix/3.0/reference"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="xsl onix xsi">

    <xsl:output method="xml" indent="no" omit-xml-declaration="yes" />
<!--  cdata-section-elements="onix:BiographicalNote onix:Text" -->
    <xsl:template match="@* | node() ">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="//onix:TextContent/onix:Text ">
        <xsl:choose>
            <xsl:when test="//onix:TextContent/onix:Text/@textformat='05'">
                <xsl:element name="Text" xmlns="http://ns.editeur.org/onix/3.0/reference" >
                <xsl:text disable-output-escaping="yes">&lt;![CDATA[</xsl:text>
                    <xsl:copy-of select="node()"/>
                <xsl:text disable-output-escaping="yes">]]&gt;</xsl:text>
                </xsl:element>
            </xsl:when>
            <xsl:otherwise>
                <xsl:copy-of select="current()"/>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
</xsl:stylesheet>
0
ответ дан Morten Dvinge 22 March 2019 в 13:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: