首页 > 解决方案 > 多次验证具有相同元素的 xml

问题描述

我想用 xsd 文件验证这个 xml 文件。如何验证后续步骤?

  1. 项目“属性”出现的次数。
  2. “nombre”节点在每个元素中具有相同的值。
  3. “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>

谁来帮帮我?

标签: xmlxsdxsd-validationxml-validation

解决方案


如上所述,互联网可以帮助您解决这些问题。例如 w3 学校是一个很好的起点。我不会给你一个完整的工作示例,但会帮助你入门。

xsd 不是一个动态的东西,它可以像元素列表的出现那样给你输出。xsd 是一种合同,其中规定一个元素可以出现 0 次或更多次,或者需要在值之间。这可以通过使用 min 和 max 发生开关来实现。

对于您的第二个问题,您可以预先定义该元素需要包含固定内容,但您不能指定第一个元素的内容应该等于所有其他元素的内容。要使用固定内容,请使用固定开关。如果需要修复内容但有多个选项,您可以定义一个带有限制的简单类型并使用枚举来添加所需的内容。

至于第三个问题,这取决于您分配给元素的类型。但通常通过向元素添加构面,您可以指定内容的最小和最大大小。

除了上述方法之外,还有许多其他方法可以解决您的问题,例如使用正则表达式。也调查他们。

我希望这可以帮助您朝着正确的方向前进并解决您的问题。


推荐阅读