xml - 多次验证具有相同元素的 xml
问题描述
我想用 xsd 文件验证这个 xml 文件。如何验证后续步骤?
- 项目“属性”出现的次数。
- “nombre”节点在每个元素中具有相同的值。
- “valor”节点没有空值。
xml文件
<datos>
<elemento tipoelemento="CABECERA">
<atributo>
<nombre>VERSION</nombre>
<valor>1.0</valor>
</atributo>
<atributo>
<nombre>BRIGADA</nombre>
<valor>JADSJL</valor>
</atributo>
<atributo>
<nombre>BUZON</nombre>
<valor>ASDKLFJKA</valor>
</atributo>
</elemento>
</datos>
我试试这个,但我不知道这是否可能。
.xsd 文件
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
elementFormDefault="qualified"
vc:minVersion="1.1">
<xs:element name="datos">
<xs:complexType>
<xs:sequence>
<xs:element name="elemento">
<xs:alternative test="@tipoelemento = 'CABECERA'" type="cabecera"/>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="cabecera">
<xs:sequence>
<xs:element name="atributo" />
</xs:sequence>
</xs:complexType>
</xs:schema>
谁来帮帮我?
解决方案
如上所述,互联网可以帮助您解决这些问题。例如 w3 学校是一个很好的起点。我不会给你一个完整的工作示例,但会帮助你入门。
xsd 不是一个动态的东西,它可以像元素列表的出现那样给你输出。xsd 是一种合同,其中规定一个元素可以出现 0 次或更多次,或者需要在值之间。这可以通过使用 min 和 max 发生开关来实现。
对于您的第二个问题,您可以预先定义该元素需要包含固定内容,但您不能指定第一个元素的内容应该等于所有其他元素的内容。要使用固定内容,请使用固定开关。如果需要修复内容但有多个选项,您可以定义一个带有限制的简单类型并使用枚举来添加所需的内容。
至于第三个问题,这取决于您分配给元素的类型。但通常通过向元素添加构面,您可以指定内容的最小和最大大小。
除了上述方法之外,还有许多其他方法可以解决您的问题,例如使用正则表达式。也调查他们。
我希望这可以帮助您朝着正确的方向前进并解决您的问题。
推荐阅读
- c++ - 如何从知道类型但不知道格式说明符的字符串中扫描值(没有 iostream)
- javascript - 更新状态时反应失去对输入的关注。一次只能更新一个字符
- dynamics-crm - 将查找数据加载到模型驱动的 PowerApps 自定义实体中
- javafx-8 - 想在 BorderPane 中添加一个画布,怎么做?
- kotlin - 如何在 Ktor 微服务应用程序中安排任务
- java - IntelliJ 的构建项目会自动做什么?
- c# - C# Datagridview 仅根据条件更改行颜色前 1000 条记录
- javascript - 需要帮助在 tfs 2015 中使用 javascript 创建工作项
- reactjs - 从 Firebase 服务器删除一组小时时出错
- php - Symfony 4:注销后显示 flashbag