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

为什么当maxInclusive有25个或更多的数字时,Libxml说模式无效?

燕正德
2023-03-14

无论这25个数字是十进制和整数还是仅仅是整数,domdocument::schemavalidate()都会发出警告,返回false,并且libxml_get_errors();捕获下一个错误:

PHP代码片段:

$DD = new DOMDocument('1.0', 'ISO-8859-1');
$DD -> loadXML('<?xml version ="1.0" encoding="ISO-8859-1"?><a></a>');
libxml_use_internal_errors(true);
$old_libxml_disable_entity_loader = libxml_disable_entity_loader(false);
$DD -> schemaValidate(__DIR__ . '/schemas/schema.xsd'); // WARNING
libxml_disable_entity_loader($old_libxml_disable_entity_loader);
$errors = libxml_get_errors();

foreach ($errors as $error) { // PRINT ERRORS
    echo $error -> code . '<br>';
    echo $error -> message . '<br>';
}

DOMDocument::SchemaValidate()生成错误:

元素“{http://www.w3.org/2001/xmlschema}maxinclusive”:该方面的值“9999999999999999999999999999”不能根据基类型“{http://www.w3.org/2001/xmlschema}decimal”进行验证。在/path/schema.xsd中的第X行

有效架构(仅限无效XML):

<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema
    targetNamespace="http://www.lala.com/la"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:la="http://www.lala.com/la"
    elementFormDefault="qualified"
    attributeFormDefault="unqualified">

    <xs:simpleType name="AmountType">
        <xs:restriction base="xs:decimal">
            <xs:totalDigits value="100"/>
            <xs:fractionDigits value="20"/>
            <xs:maxInclusive value="999999999999999999999999"/><!-- 24 DIGITS -->
        </xs:restriction>
    </xs:simpleType>
</xs:schema>

无效架构:警告+Libxml无效架构的内部错误

<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema
    targetNamespace="http://www.lala.com/la"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:la="http://www.lala.com/la"
    elementFormDefault="qualified"
    attributeFormDefault="unqualified">

    <xs:simpleType name="AmountType">
        <xs:restriction base="xs:decimal">
            <xs:totalDigits value="100"/>
            <xs:fractionDigits value="20"/>
            <xs:maxInclusive value="9999999999999999999999999"/><!-- 25 DIGITS -->
        </xs:restriction>
    </xs:simpleType>
</xs:schema>

Libxml版本:2.9.2

共有1个答案

卫开济
2023-03-14

根据W3C XML Schema第2部分:Datatypes第二版,libxml2可以限制maxinclusive的范围,因为允许它限制xs:decimal...

4.3.7最大包括:

[Definition:]maxInclusive是具有·Ordered·属性的datatype的·Value空间·的·Inclusive上限。maxInclusive的值必须在·base类型·的·value空间·中。

 类似资料:
  • 我已经实现了32位单精度浮点加法/减法、乘法、余弦、正弦、除法、平方根和范围缩小,所有这些都是在这个体系结构上的软件。 为了实现余弦和正弦,我首先使用了范围约简,使用了K.C.在论文“大参数的参数约简”中描述的方法。NG I然后实现了一个余弦和正弦函数,这是余弦和正弦函数在-pi/4到+pi/4范围内的多项式逼近。我参考了哈特等人的《计算机近似值》一书。对于多项式。 我也听说我应该考虑CORDIC

  • 问题内容: 我是mongodb的超级新手。我正在使用猫鼬从node.js访问mongodb,并且知道如何使事情工作,但是我不认为我为什么理解它的工作方式。 最重要的是,当mongodb的突出特征之一是它没有模式时,我不明白为什么猫鼬会具有“模式”。有人可以启发我吗?谢谢。 问题答案: 没有模式的数据是无用的。您从MongoDB获得文档,该怎么做?阅读一些领域?您需要知道这些字段的名称,类型和含义。

  • 我正在使用Apache JMeter 5.0进行性能测试,线程组设置如下:线程数(用户)=100 爬升周期(以秒为单位)=5 循环计数=1 但是,我注意到,当线程数增加时,响应时间会变短。 能帮助解释或指导这里发生的事情吗?

  • 以上是目前我的CNN的架构。然而,它说它有1.8m可训练的参数。为什么会这样?我以为第一层给出了(32*4=128个参数),但是我如何找到模型的其余部分有多少个参数? 我的理解是,CNN架构应该只依赖于过滤和最大池,因为它们是共享权重。为什么我有这么多参数?我应该如何着手减少这个数字? 我不是问如何使用“汇总”找到参数的数量。我是问为什么我的模型有这么多参数,以及我如何减少这个数字。我不直观地理解

  • 关于Avro序列化的消息是如何被Kafka和Schema Registry处理的,我想要了解的是,从这篇文章中,我了解到模式ID存储在每个消息中的可预测位置,因此我们似乎可以在同一个主题中拥有不同模式的消息,并且能够找到正确的模式,并基于此成功地反序列化它们。另一方面,我看到许多人似乎在使用“一个模式附加到一个主题”的表述,但这意味着每个主题都有一个模式。 那么哪一个是对的呢?我是否可以利用模式注

  • 问题内容: 谈论Java性能..哪个更好?if..else或多个if 要么 对您的想法感兴趣 谢谢! 问题答案: 在性能方面没有区别。选择最易读的选项,具体取决于代码的功能。 通常,不必担心这些微优化。只有在确定存在需要解决的性能问题后,才能进行优化。 “我们应该忘记效率低下的问题,大约有97%的时间是这样:过早的优化是万恶之源。” -唐纳德​​·努斯