gpt4 book ai didi

xslt - 在XPath 1.0中,如何测试长度为1的字符串是否落在两个其他代码点之间?

转载 作者:行者123 更新时间:2023-12-03 16:55:46 24 4
gpt4 key购买 nike

给定一个包含这些标签的文档,我该如何判断文档编码中的“” <“ H” <“ z”?我正在XPath 1.0中尝试这样做。

<text>H</text>
<range>
<from>&#x20;</from>
<to>z</to>
</range>


我什至可以摆脱使用contains()的麻烦,但是如何创建一个包含从“”到“ z”的字符的字符串以进行测试呢?

最佳答案

此转换查找ascii字符是否在任意两个ascii字符的(包括)范围内:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>

<xsl:variable name="vAscii"> !"#$%&amp;'()*+,-./0123456789:;&lt;=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~</xsl:variable>

<xsl:template match="/*">
<xsl:call-template name="isInRange">
<xsl:with-param name="pChar" select="text"/>
<xsl:with-param name="pStarting" select="range/from"/>
<xsl:with-param name="pEnding" select="range/to"/>
</xsl:call-template>
</xsl:template>

<xsl:template name="isInRange">
<xsl:param name="pChar"/>
<xsl:param name="pStarting"/>
<xsl:param name="pEnding"/>

<xsl:value-of select=
"contains($vAscii, $pChar[1])

and

string-length(substring-before($vAscii, $pChar[1]))
>=
string-length(substring-before($vAscii, $pStarting))

and

string-length(substring-before($vAscii, $pEnding))
>=
string-length(substring-before($vAscii, $pChar[1]))

"/>
</xsl:template>
</xsl:stylesheet>


当应用于以下XML文档(包含准确提供的XML片段)时:

<t>
<text>H</text>
<range>
<from>&#x20;</from>
<to>z</to>
</range>
</t>


产生想要的结果:

true


当应用于此XML文档时:

<t>
<text>H</text>
<range>
<from>A</from>
<to>G</to>
</range>
</t>


再次产生正确的结果:

false

关于xslt - 在XPath 1.0中,如何测试长度为1的字符串是否落在两个其他代码点之间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3328040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com