检查元素是否包含具有已定义属性的子元素

Check if an element contains child with defined attribute

我想检查我的 Application 属性是否有 Option 个子项,名称为 ServerServerPortLDAP 属性与 LDAPUsernameLDAPPassword.

这是我的代码示例:

<MonitoringApplication>
  <Configuration>
    <Application>
      <Option name="Server" value="http://localhost" />
      <Option name="ServerPort" value="9000" />
    </Application>

    <LDAP>
      <Option name="LDAPUsername" value="azerty" />
      <Option name="LDAPPassword" value="password" />
    </LDAP>
  </Configuration>
</MonitoringApplication>

XSD 1.0 无法强制执行此类约束。

您的选择:

  1. 重新设计您的 XML:

    <MonitoringApplication>
      <Configuration>
        <Application>
          <Server>http://localhost</Server>
          <ServerPort>9000</ServerPort>
        </Application>
    
        <LDAP>
          <LDAPUsername>azerty</LDAPUsername>
          <LDAPPassword>password</LDAPPassword>
        </LDAP>
      </Configuration>
    </MonitoringApplication>
    

    你会 然后可以使用 basic 简单地表达你的约束 内容模型术语。您甚至可以保留 @value 属性设计;移动 元素名称的 @name 属性值是最重要的部分。

  2. 检查 XSD 之外的约束。

  3. 使用XSD 1.1断言。

从 XML 设计角度来看,选项 #1 是正确的方法。