Добавьте '(апостроф) в качестве допустимого символа в шаблон XSLT - PullRequest
0 голосов
/ 23 апреля 2020

Я работаю над проектом, там они дали список допустимых символов, которые должны быть переданы как есть, и любые другие символы, кроме них, должны быть заменены на? (Знак вопроса). Программное обеспечение моей компании не позволяет использовать функцию замены, поэтому я должен использовать метод перевода.

Я могу добавить все допустимые символы, кроме '(апостроф). Как включить апостроф также в качестве допустимого символа в переменную vAllowedSymbols.

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:variable name="vAllowedSymbols" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890/-?:(),.+ '"/>
<xsl:template match="node() | @*">
    <xsl:copy>
        <xsl:apply-templates select="node() | @*"/>
    </xsl:copy>
</xsl:template>
<xsl:template match="text()">
    <xsl:value-of select="
        translate(
            .,
            translate(., $vAllowedSymbols, ''),
            ''
            )
        "/>
</xsl:template>

Ввод:

<t>
<Name>@O'Niel</Name>
<Name>St: Peter</Name>
<Name>A.David</Name>
</t>

Выход:

<t>
<Name>?O'Niel</Name>
<Name>St: Peter</Name>
<Name>A.David</Name>
</t>

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020
<xsl:variable name="vAllowedSymbols" select='"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890/-?:(),.+ &apos;"'/>

Существует некоторое преимущество в том, что переменная содержит строку вместо текстового узла. Или, точнее, be строка вместо набора узлов, содержащего текстовый узел.

0 голосов
/ 23 апреля 2020

Использование

<xsl:variable name="vAllowedSymbols">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890/-?:(),.+ '</xsl:variable>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...