当前位置: 首页 > 知识库问答 >
问题:

xsd看不到xs:十进制类型

金承嗣
2023-03-14

您好,我已将元素类型从xs:integer更改为xs:decimal,但当我尝试验证xml时,出现了一个错误:“0.2”不是“integer”的有效值。”我不明白为什么结果类型是整数。这是我的xsd:

<?xml version="1.0" encoding="UTF-8"?>
   <xs:schema xmlns="https://www.w3schools.com" 
     xmlns:xs="http://www.w3.org/2001/XMLSchema" 
     targetNamespace="https://www.w3schools.com">

 <xs:element name="distribution">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="type" minOccurs="1" maxOccurs="1"/>
            <xs:element ref="value" minOccurs="1" maxOccurs="2"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>   

<xs:element name = "type">
    <xs:simpleType>
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
</xs:element>

<xs:element name="value">
    <xs:simpleType>
        <xs:restriction base="xs:decimal"/>
    </xs:simpleType>
</xs:element>

以及我要验证的xml:

<?xml version="1.0" encoding="UTF-8"?>
<working xmlns="https://www.w3schools.com" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  xsi:noNamespaceSchemaLocation="processoproduttivo.xsd">

<resources> <!-- resources map-->
    <resource resourcename="A1">
        <resourcenumber>4</resourcenumber><!-- number of machines-->
        <capacity>50</capacity><!-- machine's capacity-->
        <distribution><!-- type of distribution-->
            <type>Uniform</type>
            <value>0.2</value>
            <value>4</value>
        </distribution>
    </resource>
</resources>
</working>

共有1个答案

管梓
2023-03-14

我认为您没有根据此架构验证此文档。

首先,命名空间不匹配。您的模式用于命名空间“https://www.w3schools.com”(这是不好的做法,因为我认为您不拥有该域),但您的实例似乎不在命名空间中。

==更新==

现在,您已经编辑了问题以显示完整的XML。这表明XML实例确实位于模式的目标命名空间中。但是,它包含一个xsi:noNamespaceSchemaLocation属性,该属性只对验证无命名空间元素有用,对查找https://www.w3schools.com“”命名空间。

 类似资料:
  • 我可以运行这个程序,但由于某些原因,它会显示/放置随机字符,而不是二进制的初始值,而且我似乎无法将程序从十进制运行回二进制。我该如何改进这些代码。要明确说明它不会将二进制转换为十进制,我将如何将其转换回十进制转换为二进制,如果有一些代码可以帮助我,将不胜感激。

  • 问题内容: 如何将RGB格式的颜色转换为十六进制格式,反之亦然? 例如,转换为。 问题答案: 注 :这两个版本的期待整数值,并且,所以你需要,如果你有非整数值做自己的舍入。 以下将执行RGB到十六进制的转换,并添加任何所需的零填充: 转换另一种方式: 最后,在答案中讨论并在@cwolves的评论中建议使用的替代版本: 更新 这是它的一个版本,还解析了一个速记的三元组,例如“#03F”:

  • 本文向大家介绍十进制到二进制转换,包括了十进制到二进制转换的使用技巧和注意事项,需要的朋友参考一下 十进制数字也可以转换为二进制格式。要将十进制数转换为二进制数,我们需要将数字除以2,直到达到0或1。然后,在每一步骤中,其余部分将分开存储以形成相反的二进制等效数。 在此算法中,我们将遵循递归方法。这将帮助我们在不使用堆栈数据结构的情况下解决问题。在实现中,我们知道函数的递归将遵循内部堆栈。我们将使

  • 问题内容: 为什么当我这样做: 我得到0,但是当我得到 我有价值吗? 我本来希望更高的精度除法返回更高的精度结果,为什么不是这种情况呢? 问题答案: 发生这种情况的原因是,对于数学运算,使用http://msdn.microsoft.com/zh- cn/library/ms190476.aspx#division中 找到的规则来计算得出的精度和小数位数 操作 e1 / e2 结果精度 p1-s1

  • 我想做一个java程序,用户输入一个十进制数,然后它转换成二进制。这是我到目前为止所拥有的,但是当我输入8时,虽然循环只循环一次,只给我0。我知道二进制中的8是1000,所以我不明白我做错了什么。我需要代码变得简单。请帮忙谢谢

  • 问题内容: 我有一个代表2的补码的十六进制字符串。是否有一种简单的方法(库/函数)将十六进制转换为十进制而不直接使用其位? EG这是给定左侧十六进制的预期输出: 谢谢! 问题答案: 这似乎在欺骗Java转换数字而不强制给出正结果: 当然,这种情况仅适用于8、16、32和64位2的补码: