Xml XSD将复杂元素定义为强制元素但所有子元素都是可选元素是否有效?

Xml XSD将复杂元素定义为强制元素但所有子元素都是可选元素是否有效?,xml,xsd,Xml,Xsd,我正在尝试从一组XPath和值编写一个XML生成器。根据其XSD,生成的XML需要是有效的。下面是一个例子 XSD。XSD版本是1.0 根据XSD,需要卡。尽管minOccurs=“0”不需要任何卡 XPath集和值位于CSV文件中。这些值可能来自数据库,因此不能保证有卡 /products/books/book[0],book1_name /products/books/book[1],book2_name 生成的XML 书名 书名 因此,XML对于其XSD无效,因为cards节点不

我正在尝试从一组XPath和值编写一个XML生成器。根据其XSD,生成的XML需要是有效的。下面是一个例子

XSD。XSD版本是1.0


根据XSD,需要
。尽管
minOccurs=“0”
不需要任何卡

XPath集和值位于CSV文件中。这些值可能来自数据库,因此不能保证有

/products/books/book[0],book1_name
/products/books/book[1],book2_name
生成的XML


书名
书名
因此,XML对于其XSD无效,因为
cards
节点不存在

  • 就XSD而言,将父(
    )设置为强制,而将所有子(
    )设置为可选是否有效
  • 就XML的含义而言,拥有
    卡片但没有任何子项或值有意义吗

    • 感谢您的解释-这确实有助于理解整个任务是什么

      就XSD而言,将父(卡)设置为强制,而将所有子(卡)设置为可选是否有效

      是的,它是有效的。XML模式规范不要求复杂元素具有任何内容。顺便说一句,有很多方法可以检查XSD是否有效。大多数XSD处理器(包括Java)在加载XSD时都会检查它。但是要小心——有些XML模式有效性规则并不是在所有处理器中都实现的(例如)

      就XML的含义而言,拥有卡片但没有任何子项或值有意义吗

      当然。这与包含零元素的非空数组完全相同。
      为什么你认为它没有意义?

      为什么你认为这是无效的?你的XSD版本是什么:1.0还是1.1?这个问题没有具体的例子,只是邀请人们发表意见。这不是StackOverflow的目的。如果你心中有一个特定的场景,请提供它,并花时间完整地解释你的问题。@kimbert,示例已添加到文章中。感谢您阅读本文。@YitzhakKhabinsky,XSD版本是1.0。