XMLValidation(XML验证)
1、XML输入的验证
所有的SUMO应用程序都支持对输入的XML验证。为了实现功能,以下的选项可以使用:
Option | Description |
-X <STRING> --xml-validation <STRING> | 设置XML输入的模式验证方案(“never”、“auto”或“always”);默认值:auto |
--xml-validation.net <STRING> | 设置SUMO网络输入的模式验证方案(“never”、“auto”或“always”);默认值:never |
验证程序通过XML分析器激活XML schema processing 运行。验证程序可以捕捉很多常见的输入错误,比如拼写错误或者属性值因该放置另一个元素等。
验证的另一个先决条件是在输入文件的根元素的模式声明(schema deceleration)。就像下面所写:
<routesxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="http://sumo.dlr.de/xsd/routes_file.xsd">
如果将验证选项设置为always,那么省略上面语句将会报错。
Schema validation会放慢XMl分析器的工作效率,因此默认不对网络(natwork)进行验证(因为networks不应该被手动编辑,能够随时被利用)。如果您有大型的自动生成的输入,您可以考虑禁用Schema validation。可以查阅this FAQ.。
2、添加一个模式声明(schema declaration)
哪些通过某个SUMO应用程序自动生成的文件应该接受适当的模板声明(schema declaration)。在从从头开始编写一个输入文件时,必须手动向根元素添加模式声明。如下:
<ROOT_ELEMENT xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://sumo.dlr.de/xsd/SCHEMA_FILE">
在上面的代码中,ROOT_ELEMENT和SCHEMA_FILE两个的设置按照如下:
Application Option | ROOT_ELEMENT | SCHEMA_FILE |
--route-files}, --trip-files, , --flow-files | routes | routes_file.xsd |
--additional-files | add | additional_file.xsd |
--node-files | nodes | nodes_file.xsd |
--edge-files | edges | edges_file.xsd |
--connection-files | connections | connections_file.xsd |
--tllogic-files | tlLogics | tllogic_file.xsd |
--type-files | types | types_file.xsd |
其中ROOT_ELEMENT的值是一种惯例,可以取任何的值。
3、模式文件
模式文件可以在SUMO根目录下的,data/xsd文件夹中找到。如果环境变量设置正确,在验证输入时,这些文件能够使用。
另外,下载的模式文件可能会是程序运行缓慢(如果没有网络连接甚至会失败)
4、SUMO文件类型
所有应用于SUMO应用程序的文件扩展名已经在文件扩展页面(FILE EXTENSIONS)列出。
题外话:
对于这部分,大家可能平常运行的话并不注意,当使用不同版本的地图数据和SUMO工具时,这部分验证就会起作用。比如在老版本中,一些路网数据的属性是少于最新版本的。下面以0.18.0和0.27.1为例讲解:
在0.27.1版本中生成的net数据在0.18.0版本中打不开,就因为数据结构的变化,我们打开net_file.xsd对比:
这个是0.18.0版本的车道类型属性
这个是0.27.1版本的车道类型属性。
和明显最新版的比旧版的多了一些属性。大家在平常使用数据时,要注意,路网数据和版本要对应。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)