Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml XSLT模板条件_Xml_Xslt_Xslt 2.0 - Fatal编程技术网

Xml XSLT模板条件

Xml XSLT模板条件,xml,xslt,xslt-2.0,Xml,Xslt,Xslt 2.0,我们的旧代码使用v1.0xsl。我刚把它改成: <?xml version="1.0"?> <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 或者甚至在xml顶部声明它并使其在任何地方都可用,因为现在,我在每个模板的40个位置重复了该代码:/ 有什么想法吗?我认为@version应该是1.0或2.0或一个变体,但不认为有版本17 至于标记,我猜它位于一

我们的旧代码使用v1.0xsl。我刚把它改成:

   <?xml version="1.0"?>
   <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
或者甚至在xml顶部声明它并使其在任何地方都可用,因为现在,我在每个模板的40个位置重复了该代码:/


有什么想法吗?

我认为@version应该是1.0或2.0或一个变体,但不认为有版本17

至于
标记,我猜它位于一个模板中,该模板与
行中的节点相匹配

contains()
函数,我认为这些参数不是必需的

<xsl:if test="contains((.),'!') or 
          contains(.,'@') or   
          contains(.,'#')">
    Data entered - Account Number <xsl:value-of select="string(.)"/> may 
    not have special characters <br/>
</xsl:if>

输入的数据-账号可能不正确
没有特殊字符

我选择了
匹配项

<xsl:if test="not(matches(., '^[a-zA-Z0-9]+$'))">
          Data entered - Accounting Station Number('<xsl:value-of select="string(.)"/>') may not have special characters 
</xsl:if>

输入的数据-会计站编号(“”)不能有特殊字符

直到您指出,我才注意到版本:)谢谢。是的,每个模板中都有这些代码。如果您使用的是XSLT2.0处理器,为什么您的问题会被标记为XSLT1.0?如果没有,为什么要更改样式表的版本?@michael.hor257k我将其标记为v1.0,因为我不确定如何从1.0更改为2.0,或者如果我做得对如果您的问题是关于XSLT 2.0的,那么XSLT 1.0标记是不相关的。两个版本都有更简单的解决方案,但正则表达式仅在XSLT2.0中可用。
<xsl:variable name="illegalCharacters">! @ # $ % ^ &amp * ( ) \ + = { } [ | ] \ \ : ; &lt &gt ?  / , .</xsl:variable>

<xsl:if test="matches((.),$illegalCharacters)"></xsl:if>
<xsl:if test="contains((.),'!') or 
          contains(.,'@') or   
          contains(.,'#')">
    Data entered - Account Number <xsl:value-of select="string(.)"/> may 
    not have special characters <br/>
</xsl:if>
<xsl:if test="not(matches(., '^[a-zA-Z0-9]+$'))">
          Data entered - Accounting Station Number('<xsl:value-of select="string(.)"/>') may not have special characters 
</xsl:if>