XSLT - 检查元素字符串中是否存在模式

its*_*lur 3 regex xslt xslt-2.0

我有以下元素作为更大的XML的一部分

<MT N="NonEnglishAbstract" V="[DE] Deutsch Abstract text [FR] French Abstract text"/>
Run Code Online (Sandbox Code Playgroud)

我需要对@V属性中的值进行一些格式化,只要它包含[DE],[FR]或任何两个大写字母代表方括号内的国家代码.

如果不存在这样的模式,我只需要编写@V没有任何格式的值.

我可以使用XSLT 2.0解决方案

我希望我可以使用matches()函数

<xsl:choose>
<xsl:when test="matches(@V,'\[([A-Z]{{2}})\]([^\[]+'">
//Do something
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@V"/>
</xsl:otherwise>
</xsl:choose>
Run Code Online (Sandbox Code Playgroud)

G. *_*man 5

我认为你所需要的只是:

matches(@V,'\[[A-Z][A-Z]\]')
Run Code Online (Sandbox Code Playgroud)

你不必匹配整个字符串来获得true()...我告诉我的学生写一个尽可能短的注册表.