微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 schematron 中使用 for-each 循环

如何解决在 schematron 中使用 for-each 循环

我是自学成才,所以我提前为我所有的错误道歉。

我的 xml 包含 50 个 testwithstate 元素,每个元素都包含一个 ID 属性。我一直无法运行 for-each 循环,我试图创建一个尽可能简单的测试来找出我的错误,但没有成功。我的代码如下。在此先感谢您提供的任何帮助。

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://purl.oclc.org/dsdl/schematron" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" queryBinding="xslt2" xmlns:sqf="http://www.schematron-quickfix.com/validator/process">
 <ns uri="http://www.w3.org/1999/xlink" prefix="xlink"/>
 <ns prefix="xs" uri="http://www.w3.org/2001/XMLSchema"/>
 
 <pattern>
  <rule context="testwithstate">
   <xsl:for-each select="/@id">
    <report test="1=1">It ran.</report>
   </xsl:for-each>
  </rule>
 </pattern>

</schema>

解决方法

我在 schematron 中写了很多,当我需要高级 xsl 代码来运行时,我将它分开来运行,这样你就可以充分利用两者。我给你举个例子。 这段代码对你来说可能没有多大意义,它是一个片段,但它向你展示了一种混合 schematron 和 xslt 的方法:

<?xml version="1.0" encoding="UTF-8"?>
<sch:schema xmlns:sch="http://purl.oclc.org/dsdl/schematron" queryBinding="xslt2"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<sch:pattern id="TPOD0470" is-a="abstractPatternWarning">
        <sch:param name="CONDITION" value="string-length(foo:foutenTPOD_0470(.)[1]) = 0"/>
</sch:pattern>
    
    <xsl:function name="foo:foutenTPOD_0470">
        <xsl:param name="context" as="node()"/>
        <xsl:for-each select="$context/../tekst:Titel">
            <xsl:if test="$context/@eId=@eId and not(starts-with(tekst:Kop/tekst:Nummer,concat($context/../tekst:Kop/tekst:Nummer,'.')))">
                <xsl:value-of select="@eId"/>
            </xsl:if>
        </xsl:for-each>
    </xsl:function>
</sch:schema>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?