【发布时间】:2015-01-06 15:15:42
【问题描述】:
我有问题。我在 XML 中有换行符、空格和制表符。像这样:
<value xs:type="DV_TEXT"><value>1111\this is what it is used for, this could be a
really long line or even
multiple lines, just like
what you are reading now
</value></value>
来自 org.w3c.dom 的 Java 中的 setTextContent 和 getTextContent 处理得很好。没问题。
但是现在,我正在生成 Schematron 进行验证,以检查该字符串是否真的出现在值中。 Schematron 是从配置了测试字符串的定义文件生成的
生成的 Schematron,assert-test 如下所示:
test="(matches(.,'1111\this is what it is used for, this could be a really long line or even
multiple lines, just like
what you are reading now'))"
然后当我验证时,会出现更多问题。
首先是换行符。似乎在生成 Schematron 的定义文件中有\r\n 而不仅仅是\n。
但好吧,我必须指望这一点。如果我只用&#xA; 替换所有&#xD;&#xA;,一些错误就会消失。我如何确定 XML 文件也只有 &#xA; 作为换行符?
我认为我需要更改测试断言中的字符串,例如,将所有 \r\n 替换为仅 \n。
我已经做到了,它部分解决了我的问题。我还应该考虑什么?
欢迎所有提示。
【问题讨论】:
-
"我如何确定 XML 文件也只有
&#xA;作为换行符" - according to the spec XML 解析器在读取 XML 文件时必须始终将行尾规范化为 U+000A ,无论原始文件包含什么。您应该看到的唯一 U+000D 字符是那些首先表示为字符引用的字符。
标签: java xml schematron