Удалить двойные кавычки с помощью XSLT - PullRequest
0 голосов
/ 01 апреля 2019

Я должен удалить двойные кавычки, если за ним непосредственно следует элемент <remove>some text</remove>. Например

Это должно быть истолковано как "о глаголе" соответствие с чем-то "некоторые из растений" и так на

Должно быть

Это должно быть истолковано в соответствии с глаголом с чем-то растениями и т. д.

<p>This is to be interpreted in "<remove>about verb</remove>" accordance with something "<remove>some of plants</remove>" and so on</p>

Должно быть

<p>This is to be interpreted in <remove>about verb</remove> accordance with something <remove>some of plants</remove> and so on</p>

Ответы [ 2 ]

3 голосов
/ 01 апреля 2019

В XSLT 1.0 , это может быть обработано:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

<!-- identity transform -->
<xsl:template match="@*|node()">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>

<xsl:template match="text()">
    <xsl:variable name="s" select="preceding-sibling::node()[1][self::remove] and starts-with(., '&quot;')"/>
    <xsl:variable name="e" select="following-sibling::node()[1][self::remove] and substring(., string-length(.))='&quot;'"/>
    <xsl:value-of select="substring(., 1 + $s, string-length(.) -$s -$e)"/>
</xsl:template>

</xsl:stylesheet>
0 голосов
/ 01 апреля 2019

Для 2.0 вы можете использовать fn: replace ():

replace(//p,'&quot;','')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...