我是XML/XSLT
的新手。如果有人能给我一些关于我的问题的提示或解释,我会很高兴。
我在XML <SquishReport>
中有一些XML
个文件,想要检查它们是否有错误,否则我对它的内容不感兴趣。要缩短:检查报告文件中是否有任何错误。我编写了script XSLT
格式,检查整个文件并提供仅有一个文件的报告并为部件着色。
现在我想检查一些文件夹中存在的所有XML
个文件。这是描述:
XML
个文件的数量不同。然后,我必须在考虑所有XML
文件之前找到每个文件夹中XML
个文件的数量。if
部分的test/message
条件,如果是XML文件。非常感谢您的想法和帮助!
答案 0 :(得分:1)
我写了一个剧本
我认为你的意思是: Sean B. Durkin写了,或者至少部分是因为你链接到包含他写的代码的答案。
您使用XSLT 1.0和XSLT 2.0标记了您的问题,因此我假设您可以使用XSLT 2.0。
每个文件夹中的XML文件数量不同。然后,我必须在考虑所有XML文件之前找到每个文件夹中的XML文件数。
这没关系。使用collection
函数让它遍历你的文件夹,大多数处理器支持递归遍历它们。
上面链接的代码会读取所有消息。但我正在寻找只找到文件中的错误并收集每个文件夹的所有错误说明。我正在考虑XML文件的测试/消息部分的if条件。
“如果XML文件”似乎表明您希望此条件仅在它是XML文件时应用,并且您的文件夹也包含其他文件。请使用doc-available
,这个函数只有在文件实际为XML时才会成功。
在XSLT 3.0中,您可以使用xsl:try
,这将忽略在尝试加载非XML文档时引发的任何错误。
此外,某些处理器允许您使用collection
函数并忽略任何不可解析为XML的文件。请查看处理器的文档以了解如何执行此操作。
最后,分别打印出一个文件夹中整个文件中有多少文件出错。例如六个中的三个,详细描述哪个部分有错误。
这是标准的XSLT任务。使用sum
,如果要区分文件夹,可以在匹配的模板中根据base-uri
进行区分。如果需要,您甚至可以按照这种方式对结果进行排序。