Произошла ошибка XSLT «Неоднозначное соответствие правилу»

Я пытаюсь сопоставить два сценария:

  1. Строка содержит символы, отличные от числа
  2. Строка содержит более 8 символов

Итак, XSLT:

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

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

    <xsl:template match="record[translate(employeeNumber, 'abcdefghijklmnopqrstuvwxyzABCDEFGHILKLMNOIPQRSTUVWXYZ!£$%^', '')]"/>
    <xsl:template match="record[string-length(employeeNumber) &lt; 9]"/>
</xsl:stylesheet>

Тестовые данные:

<?xml version="1.0" encoding="UTF-8"?>
<request>
    <records>
        <record>
            <employeeNumber>12345678</employeeNumber>
        </record>
        <record>
            <employeeNumber>1234567A</employeeNumber>
        </record>
        <record>
            <employeeNumber>12345678A</employeeNumber>
        </record>
        <record>
            <employeeNumber>123456789</employeeNumber>
        </record>
    </records>
</request>

Вот что должно быть возвращено:

<?xml version="1.0" encoding="UTF-8"?>
<request>
    <records>
        <record>
            <employeeNumber>1234567A</employeeNumber>
        </record>
        <record>
            <employeeNumber>12345678A</employeeNumber>
        </record>
        <record>
            <employeeNumber>123456789</employeeNumber>
        </record>
    </records>
</request>

Однако, как я сказал в Oxygen, я получаю сообщение об ошибке:

Серьезность: предупреждение Описание: Неоднозначное соответствие правилу для /request[1]/records[1]/record[1] Соответствует обеим "record[string-length(employeeNumber) < 9]" в строке 13 файла:/C:/Users/mdown/Desktop/Untitled21.xsl и "record[translate(employeeNumber, 'abcdefghijklmnopqrstuvwxyzABCDEFGHILKLMNOIPQRSTUVWXYZ!£$%^', '')]" в строке 12 файла:/C:/Users/mdown/Desktop/Untitled21.xsl

Причина этого в том, что он соответствует обоим правилам, однако это не должно быть проблемой. Как бы я изменил XSLT для поддержки этих параметров.

7
задан mmkd 10 May 2012 в 15:02
поделиться