我创建了一个Scala应用程序,它使用scala.xml.PrettyPrinter
从少数几个来源读取信息并将其作为XML文件输出。此文件必须向XML Schema确认,因为我还编写了一个R脚本,它将使用实现该架构的文件。
架构包含一些枚举,验证失败,消息如下:
xmllint --noout studies-clean.xml --schema ../litsuche-satisfaction.xsd studies-clean.xml: 9: element satisfactionCorrelation: Schemas validity error : Element '{http://rumtscho/dissertation/litusersat}satisfactionCorrelation': [facet 'enumeration'] The value ' observed user reactions ' is not an element of the set {'satisfaction', 'usability', 'product quality', 'task process quality', 'absence of negative reactions', 'task result quality', 'expectation disconfirmation', 'preference for a version', 'enjoyment', 'observed user reactions', 'technology acceptance', 'likelihood of referral', 'user state', 'attribute performance', 'user choice of action', 'time spent doing a task', 'user's impression of the system', 'impact of IS', 'user characteristics', 'organisation context', 'task parameters', 'need fit', 'cost', 'cognitive load'}.
如您所见,observed user reactions
是我的枚举的成员,但是无法识别带有前导和尾随空格的相同字符串。这个空白由漂亮的打印机插入;值为usability
的另一行打印在一行上,验证器不会在那里抱怨。
使用xmllint的--noblanks选项不会改变任何内容。
我不知道要改变什么,以便整个过程有效。我看到两种选择:
选项2和3也要求我在加载时对任何文本进行R修剪,但这是一个单行更改。所以我非常喜欢使用其中之一。
我的问题:
更新以响应评论这是漂亮的打印机输出。它在长值周围插入换行符,但不包括短值换行符。我认为这对于漂亮的打印机来说是正常的行为,但即使它不是,API也不包括阻止它插入这些中断的选项。
<st:satisfactionCorrelations>
<st:satisfactionCorrelation>
observed user reactions
</st:satisfactionCorrelation>
<st:satisfactionCorrelation>usability</st:satisfactionCorrelation>
</st:satisfactionCorrelations>
答案 0 :(得分:0)
使用选项1并在需要查看文件时使用漂亮的打印过滤器。例如
xmllint --format foo.xml|less
或
xmllint --format foo.xml > foo-pretty-printed.xml