ChatGPT解决这个技术问题 Extra ChatGPT

XML Schema:具有仅包含文本的属性的元素?

我很难找到这个。我如何在 XML 模式文件中为 XML 定义一个元素,如下所示:

<option value="test">sometext</option>

我不知道如何定义类型为 xs:string 并且还具有属性的元素。

这是我到目前为止所得到的:

<xs:element name="option">
    <xs:complexType>
        <xs:attribute name="value" type="xs:string" />
    </xs:complexType>
</xs:element>

D
David Norman

尝试

  <xs:element name="option" type="AttrElement" />

  <xs:complexType name="AttrElement">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="value" type="xs:string">
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

我在尝试您的代码时遇到以下异常 - org.xml.sax.SAXParseException:src-resolve:无法将名称“AttrElement”解析为(n)“类型定义”组件。为什么呢?
如果是这样,可能是因为您的架构文档有一个目标命名空间,您需要使用前缀名称来指向该类型。 (如果前缀 tns 绑定到架构文档的目标命名空间,您将使用 type="tns:AttrElement" 来引用类型。)
@Ashwin,您可能需要使用类型命名空间引用类型(如果您的 XSD 的默认命名空间是 xs 而不是文档的 targetNamespace,则为 type="tns:AtrElement"。通常在这种情况下定义和使用 tns
e
eckes

...或内联等效项:

<xs:element name="option">
  <xs:complexType>
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="value" type="xs:string" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
</xs:element>

我发现在 complexType 中定义 simpleContent 真的很不直观。但话又说回来,它是 XSD,似乎没有什么是真正直观的。还是谢谢! :-)
这将在 IntelliJ (V12.1.3) 中向我显示一个错误: value 属性是“不允许的”。使用 complexContent 而不是 simpleContent 修复了它。
@CrBruno 最好为此打开一个专门的 SO 问题。随意在评论中链接到它(并指向这个讨论)
e
eckes

我知道它不一样,但它对我有用:

<xsd:element name="option">
    <xsd:complexType mixed="true">
        <xsd:attribute name="value" use="optional" type="xsd:string"/>
    </xsd:complexType>
</xsd:element>

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅