Я схожу с ума здесь ..Schematron регулярное выражение: тест не пройден с широким выражением
test
не сможет использовать широкий матч-нибудь регулярное выражение как '^.+$'
(показано в образце файла), но работает с конкретным '^C.+$'
Я также пробовал test="string-length(.) > 0"
, и он терпит неудачу.
Пожалуйста, помогите.
Этот файл XML:
<article>
<back><ack>
<title>Acknowledgements</title>
<p>The authors would like to thank <funding-source rid="sp1">CNPq</funding-source> (Process numbers <award-id rid="sp1">303287/2013-6</award-id> and <award-id rid="sp1">303559/2012-8</award-id>), <funding-source rid="sp2">FAPESP</funding-source> (Process number <award-id rid="sp2">2012/12207-6</award-id>) and <funding-source rid="sp3">CAPES</funding-source> (Process number <award-id rid="sp3">12357-13-8</award-id>) for the financial support.</p>
</ack></back></article>
Это файл Schematron, что FAILS:
<schema xmlns="http://purl.oclc.org/dsdl/schematron"
queryBinding="exslt"
xml:lang="en">
<ns uri="http://www.w3.org/1999/xlink" prefix="xlink"/>
<ns uri="http://exslt.org/regular-expressions" prefix="regexp"/>
<pattern id="funding_info">
<title>Make sure funding-source does not happen inside p</title>
<assert test="regexp:test(current(), '^.+$')">
EC-CHECK: Nao deve haver 'funding-source' nem 'award-id' dentro de 'p'
</assert>
</rule>
</pattern>
</schema>
Это файл Schematron, который работает:
<schema xmlns="http://purl.oclc.org/dsdl/schematron"
queryBinding="exslt"
xml:lang="en">
<ns uri="http://www.w3.org/1999/xlink" prefix="xlink"/>
<ns uri="http://exslt.org/regular-expressions" prefix="regexp"/>
<pattern id="funding_info">
<title>Make sure funding-source does not happen inside p</title>
<assert test="regexp:test(current(), '^C.+$')">
EC-CHECK: Nao deve haver 'funding-source' nem 'award-id' dentro de 'p'
</assert>
</rule>
</pattern>
</schema>
I _guess_, что в первом файле '.' отбрасывает новую строку. Во вторых это соответствует 'C', а затем переходит к' все', так как '.' следует' C' в регулярном выражении. –
Я мало знаю о 'xml', но если вы можете добавить' режимы', тогда добавьте режим 's'. –
Попробуйте '^ [\ s \ S] + $' или '^ [^] + $' –