Schematron быстрое решение проблемы - PullRequest
1 голос
/ 07 октября 2019

после замены текста 'abc' на '-abc' с помощью быстрого исправления у меня все еще есть возможность заменить текст 'abc' на '-abc'.
Ввод XML:

  <data>
     <text>10abc and 20-abc</text>
     <text>30abc test 40abc and 15-abc </text>
  </data>

schematronкод:

<sch:pattern>
        <sch:rule context="//text()">
<sch:report
                test="contains(.,'abc ')"sqf:fix="group-fix">abc not allowed without hypen</sch:report>
<sqf:group id="group-fix">
 <sqf:fix id="abc-fix" use-when="contains(current(),'abc')">
                    <sqf:description>
                        <sqf:title>replace</sqf:title>
                    </sqf:description>
                    <sqf:replace>
                        <xsl:analyze-string select="." regex="(\d+)abc\s">
                            <xsl:matching-substring><xsl:value-of select="regex-group(1)"/><xsl:value-of select="'-abc'"/><xsl:text>&#xA0;</xsl:text></xsl:matching-substring>
                            <xsl:non-matching-substring><xsl:value-of select="."/></xsl:non-matching-substring>
                        </xsl:analyze-string>
                    </sqf:replace>
                </sqf:fix>
    </sqf:group>
        </sch:rule>
    </sch:pattern>

почему я получаю возможность заменить 'abc' на '-abc' снова даже после того, как замена завершена? Может кто-нибудь сказать мне, что не так с кодом? Заранее спасибо

1 Ответ

0 голосов
/ 07 октября 2019

Вы можете попробовать это

    <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="2.0">
    <xsl:output method="xml" omit-xml-declaration="no"/>
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="//text()">
        <xsl:value-of select="replace(., '((\d+)(abc))', '$2-$3')"/>
    </xsl:template>
</xsl:stylesheet>

DEMO https://xsltfiddle.liberty -development.net / 94AbWAS / 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...