こんにちは、次のような 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!£$%^', '')]" priority="1"/>
<xsl:template match="record[string-length(employeeNumber) < 8]" priority="2"/>
</xsl:stylesheet>
ご覧のとおり、条件に一致させるには、文字または特殊文字を含めてはならず、8 文字よりもはるかに大きくする必要があります。したがって、この XML を使用する場合:
<?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 が返されます。
<?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>
ただし、実際には次のように返されます。
<?xml version="1.0" encoding="UTF-8"?>
<request>
<records/>
</request>
一致しない理由:
- 文字だけを探して
- 8 を超える文字の 2 番目の一致を使用していませんか?