「単語」とは、次のことを意味するとします。
ラテンアルファベットで始まり、含まれるすべての文字はラテン文字または10進数のいずれかです。
XPath式を使用して、これらを正確に見つけることができます。
//TEST_TAG
[contains('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
substring(.,1,1)
)
and
not(
translate(.,
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789',
'')
)
]
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="/*">
<xsl:copy-of select=
"//TEST_TAG
[contains('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
substring(.,1,1)
)
and
not(
translate(.,
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789',
'')
)
]
"/>
</xsl:template>
</xsl:stylesheet>
このXMLドキュメントに適用した場合(提供されたものですが、不正な「単語」が追加されています):
<DATI>
<DATO>
<TEST_TAG>Test</TEST_TAG>
</DATO>
<DATO>
<TEST_TAG>#$%Test21</TEST_TAG>
</DATO>
<DATO>
<TEST_TAG>Abc</TEST_TAG>
</DATO>
</DATI>
上記のXPath式を評価し、選択した要素を出力にコピーします。
<TEST_TAG>Test</TEST_TAG>
<TEST_TAG>Abc</TEST_TAG>
注意してください:
現在受け入れられている答えは、これを誤って生成します。
<TEST_TAG>#$%Test21</TEST_TAG>
文字列値が「単語」である要素として。