?" />

有什么区别?和

发布于 2024-09-24 04:18:02 字数 786 浏览 9 评论 0 原文

您知道 XML/XSD 上的这些标签之间是否有区别吗?

<a_element /> and <a_element xsi:nil="true"/>

例如:

<SpreadCurve>
      <Index>3M</Index>
      <IndexNumber>4587</IndexNumber>
      <BusinessArea xsi:nil="true" />
</SpreadCurve>

and

<SpreadCurve>
      <Index>3M</Index>
      <IndexNumber>4587</IndexNumber>
      <BusinessArea />
</SpreadCurve>

这些等价吗?

如果我有一个 XSD 元素:

<xsd:element name="BusinessArea" type="xsd:string"/>

这意味着它默认为 xsi:nil="false"。这意味着它不会接受该元素的空值。

我的疑问是,它会接受这个吗?

<BusinessArea />

这对 XSD 到底意味着什么?

此致

do you know if there's a difference between these tags on XML/XSD?

<a_element /> and <a_element xsi:nil="true"/>

e.g:

<SpreadCurve>
      <Index>3M</Index>
      <IndexNumber>4587</IndexNumber>
      <BusinessArea xsi:nil="true" />
</SpreadCurve>

and

<SpreadCurve>
      <Index>3M</Index>
      <IndexNumber>4587</IndexNumber>
      <BusinessArea />
</SpreadCurve>

Are these equivalent ?

If I have a XSD element:

<xsd:element name="BusinessArea" type="xsd:string"/>

this means that it is by default xsi:nil="false". And this means it will not accept a null value for this element.

My doubt is, will it accept this one?

<BusinessArea />

What does this really mean to the XSD?

Best regards

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

笔落惊风雨 2024-10-01 04:18:02

您得到此信息是因为您的 XSD BusinessArea 应定义为 nillable="true"。类似于:

<xsd:element name="BusinessArea" nillable="true">
.....
</xsd:element> 

这意味着 BusinessArea 元素可以具有 null 值,即空。

如果 XML 中的元素不包含任何值,则它必须具有属性 xsi:nil="true":

<BusinessArea xsi:nil="true" />

这应该是无效的:

<BusinessArea />

您展示的两个示例不应该是等效的。

查看此内容以了解 xsi:nil 和 nillable:

http://www.zvon。 org/xxl/XMLSchemaTutorial/Output/ser_over_st0.html

http://www .w3.org/TR/xmlschema-0/#Nils

You get this as your XSD BusinessArea should be defined as nillable="true". Something like:

<xsd:element name="BusinessArea" nillable="true">
.....
</xsd:element> 

What this mean is that BusinessArea element can have null value i.e. empty.

And if element in XML doesn't contain any value then it must have attribute xsi:nil="true":

<BusinessArea xsi:nil="true" />

This should be invalid :

<BusinessArea />

Two examples you showed should not be equivalent.

Check this out for understanding xsi:nil and nillable:

http://www.zvon.org/xxl/XMLSchemaTutorial/Output/ser_over_st0.html

http://www.w3.org/TR/xmlschema-0/#Nils

王权女流氓 2024-10-01 04:18:02

XML 架构:结构引入了
发出信号的机制
元素应被视为·有效·
当它没有内容时
不需要或的内容类型
甚至必须允许空内容。
一个元素可能是“有效”的,无需
内容(如果具有该属性)
xsi:nil 值为 true。一个
如此标记的元素必须为空,但是
如果允许的话可以携带属性
相应的复杂类型。

来源:http://www.w3.org/TR/xmlschema-1/# xsi_nil

XML Schema: Structures introduces a
mechanism for signaling that an
element should be accepted as ·valid·
when it has no content despite a
content type which does not require or
even necessarily allow empty content.
An element may be ·valid· without
content if it has the attribute
xsi:nil with the value true. An
element so labeled must be empty, but
can carry attributes if permitted by
the corresponding complex type.

Source: http://www.w3.org/TR/xmlschema-1/#xsi_nil

七七 2024-10-01 04:18:02
<a_element />  

相当于空字符串,并且对 xsd:string 有效,但对 xsd:date、xsd:datetime、xsd:decimal 等类型无效。

<a_element xsi:nil="true"/>

相当于 null< /code> 并将对架构定义中具有 nillable="true" 的所有元素呈现有效

<a_element />  

is the equivalent of an empty string and will render valid against xsd:string, but not against types like xsd:date, xsd:datetime, xsd:decimal etc.

<a_element xsi:nil="true"/>

is the equilalent of null and will render valid for all elements which have nillable="true" in the schema-definition

墨小墨 2024-10-01 04:18:02

我的理解是它们不一样。
至少如果您想根据模式验证 xml 的话。
如果在您的 schema 中您将元素定义为 nillable,那么

<xsd:element name="SomeName" type="xsd:double" nillable="true"/>

您需要在 xml 中显式将该元素设置为 null,如下所示:

<SomeName xsi:nill="true" />

如果在您的 xml 中该元素类似于 根据架构,它无效。

My understanding is that they are not the same.
At least if you want to validate the xml against a schema.
If in your schema you define the element as nillable, let's say:

<xsd:element name="SomeName" type="xsd:double" nillable="true"/>

You need to explicitly in your xml set that element to null, like this:

<SomeName xsi:nill="true" />

If in your xml the element is like <SomeName /> it will not be valid according to the schema.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文