您好,我有一个看起来像这样的 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 个字符的第二个匹配项?