如何在正则表达式元素匹配中使用 xsl 变量
How to use xsl varaible in regex element matches
我需要使用 XSL 变量和正则表达式模式进行验证。该变量保存两个元素文本的值。基本上验证是,如果 XSL 变量值(新的和 202)不存在于 url 中,则应该抛出错误消息。
XSL 文件
<xsl:variable name="XYZ" select="lower-case(//xyz/text())"/>
<xsl:variable name="BCD" select="lower-case(//bcd/text())"/>
<xsl:template match="//url[@url!='https://www.mvcf/journals/\*$XYZ*/2021/$BCD.']">
<xsl:message><xsl:value-of select="saxon:line-number()"/>:<xsl:value-of select="saxon:column-number()"/> the url aatribute does not contains xyz and bcd values </xsl:message>
</xsl:template>
输入Xml:
<?xml version="1.0" encoding="utf-8"?>
<test>sdfsdf<xyz>new</xyz><rey>#01</rey><bcd>202</bcd> </test>
<url url="https://www.mvcf/journals/ytre/2021/202.csv" />
Basically the validation is if the XSL variable values (new & 202) are not present in the url the error message should be thrown.
这可以通过以下方式在没有正则表达式的情况下完成:
<xsl:template match="url[not(contains(@url, $XYZ) and contains(@url, $BCD))]">
如果您想对 URL 的其他部分进行硬编码,则:
<xsl:template match="url[@url!=concat('https://www.mvcf/journals/', $XYZ, '/2021/', $BCD)]">
未测试,因为没有提供用于测试的代码。
我需要使用 XSL 变量和正则表达式模式进行验证。该变量保存两个元素文本的值。基本上验证是,如果 XSL 变量值(新的和 202)不存在于 url 中,则应该抛出错误消息。
XSL 文件
<xsl:variable name="XYZ" select="lower-case(//xyz/text())"/>
<xsl:variable name="BCD" select="lower-case(//bcd/text())"/>
<xsl:template match="//url[@url!='https://www.mvcf/journals/\*$XYZ*/2021/$BCD.']">
<xsl:message><xsl:value-of select="saxon:line-number()"/>:<xsl:value-of select="saxon:column-number()"/> the url aatribute does not contains xyz and bcd values </xsl:message>
</xsl:template>
输入Xml:
<?xml version="1.0" encoding="utf-8"?>
<test>sdfsdf<xyz>new</xyz><rey>#01</rey><bcd>202</bcd> </test>
<url url="https://www.mvcf/journals/ytre/2021/202.csv" />
Basically the validation is if the XSL variable values (new & 202) are not present in the url the error message should be thrown.
这可以通过以下方式在没有正则表达式的情况下完成:
<xsl:template match="url[not(contains(@url, $XYZ) and contains(@url, $BCD))]">
如果您想对 URL 的其他部分进行硬编码,则:
<xsl:template match="url[@url!=concat('https://www.mvcf/journals/', $XYZ, '/2021/', $BCD)]">
未测试,因为没有提供用于测试的代码。