Я самоучка, поэтому заранее извиняюсь за все свои ошибки.
Мой 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>
xsl:for-each
внутри вашей схемы Schematron? И какую реализацию Schematron вы используете, какой результат вы хотите получить с приведенным выше примером и какую ошибку или результат вы получаете вместо этого? - person Martin Honnen   schedule 24.12.2020<rule context="testwithstate/@id"><report test="true()">It ran.</report></rule>
. Хотя предполагается, что использованиеqueryBinding="xslt2"
позволит вам использовать объявление XSLT 2, такое какxsl:function
илиxsl:key
, внутри вашего Schematron перед любыми правилами, я думаю, я не уверен, что общее использование инструкций XSLT, таких какxsl:for-each
, где-то разрешено или указано и имеет хорошо- определенное значение, если вы не пытаетесь использовать какую-то конкретную реализацию или расширение на основе XSLT. - person Martin Honnen   schedule 25.12.2020testwithstate
, внутри вы используете относительные выражения XPath, такие как@id
, для выбора/доступа к атрибутуid
элемента контекста. Использование/@id
попытается выбрать атрибутid
узла документа, узлы документа даже не имеют атрибутов, они есть только у узлов элементов. - person Martin Honnen   schedule 25.12.2020<rule context="testwithstate/@id"><report test="true()">It ran.</report></rule>
, каждыйtestwithstate/@id
атрибут должен дать вам отчетIt ran.
о проверке. - person Martin Honnen   schedule 26.12.2020