【问题标题】:cannot validate XML against XSD无法针对 XSD 验证 XML
【发布时间】:2017-03-24 17:20:13
【问题描述】:

我在尝试处理我的 XML 时不断收到 2 个错误;说它不是有效的 OAGIS 文档。我的 XML 很简单。 XSD 是来自 OAGIS 9_6_1 的 NotifyCatalog.xsd 当我使用 xmlvalidation.com 时它说:

XML 文档中的错误:2:317 cvc-elt.1:找不到 元素“NotifyCatalog”的声明。

文件 xml-schema 中的错误:27:233 TargetNamespace.2:不期望 命名空间,但架构文档的目标命名空间为 'http://www.openapplications.org/oagis/9'。

请帮忙!下面是 XML,XSD 大于 6000 行,但如果你愿意,我可以附上。

<?xml version="1.0" encoding="UTF-8"?>
<NotifyCatalog xmlns:xs="http://www.openapplications.org/oagis/9" targetNamespace:ibts="http://www.openapplications.org/oagis/9" versionID="9_4" releaseID="9_4" systemEnvironmentCode="Production">
  <ApplicationArea>
    <Sender>
      <LogicalID>MRP</LogicalID>
      <ComponentID>WID</ComponentID>
      <TaskID/>
      <ReferenceID>9990000000001568</ReferenceID>
      <ConfirmationCode>OnError</ConfirmationCode>
      <AuthorizationID>AUTOSYS</AuthorizationID>
    </Sender>
    <CreationDateTime>2017-03-21T15:10:08.551</CreationDateTime>
    <BODID>CATALOG-0000000000001</BODID>
  </ApplicationArea>
   <DataArea>
      <Notify>
         <ActionCriteria>
            <ActionExpression actionCode="Add">/NotifyCatalog/DataArea/Catalog/CatalogLine[Attachment/EmbeddedData=&apos;jimmy.pdf&apos;]</ActionExpression>/>
         </ActionCriteria>
      </Notify>
      <Catalog>
         <CatalogHeader>
            <DocumentID agencyRole="PLM">
               <ID/>
               <RevisionID/>
               <VariationID/>
            </DocumentID>
            <Description>HeaderPlasmaMonitorEBOM.pdf</Description>
         </CatalogHeader>
         <CatalogLine>
            <Item>
               <ItemID agencyRole="PLMDocument">
                  <ID>29433</ID>
                  <RevisionID>003</RevisionID>
               </ItemID>
                   <Description languageID="en-us">LinePlasmaMonitorEBOM.pdf</Description>
                   <Specification type="SecurityGroup">
                          <Property>
                             <NameValue name="SecurityGroup">PU</NameValue>
                          </Property>            
                   </Specification>
<!--                   <UserArea>                         <ibts:AttachmentUserArea/>                   </UserArea>-->
            </Item>
            <Attachment type="Thumbnail">
               <EmbeddedData mimeCode="normalizedString">jimmy.pdf</EmbeddedData>
            </Attachment>
         </CatalogLine>
      </Catalog>
   </DataArea>
</NotifyCatalog>

【问题讨论】:

  • 我相信你应该使用"targetNamespace="openapplications.org/oagis/9"
  • 甚至完全省略 targetNamespace。我不确定你为什么要使用它。
  • 架构来自 oagi.org,通过他们的 v9.6.1 公开下载。这是他们的 NotifyCatalog.xsd。我几乎无法使用它。有没有办法让我的 xml 忽略它不喜欢的东西?
  • 删除targetNamespace;它进入 XSD,而不是 XML 文档实例。并发布说明任何其他问题的minimal reproducible example。如果你不能这样做,至少发布一个最小的 XML 文档来说明你的问题和 XSD 的在线链接。至少如果没有这些,您将无法按顺序发布遇到的每个错误,而且这可能会很冗长。

标签: xml xsd-validation


【解决方案1】:

尚未查看架构,但除非它是无命名空间架构(不太可能),否则您应该像这样开始您的文档:

<NotifyCatalog xmlns="http://www.openapplications.org/oagis/9"
               versionID="9_4"
               releaseID="9_4"
               systemEnvironmentCode="Production">
...

xmlns= 告诉 XML 将默认命名空间分配给没有命名空间前缀的元素(文档中的所有元素都没有,因此所有元素都将收到默认命名空间前缀)。

此属性说明:

targetNamespace:ibts="http://www.openapplications.org/oagis/9"

是伪造的(并且由于 targetNamespace 不是已声明的命名空间前缀而无效);如果你想指定ibts 作为命名空间前缀绑定,你必须使用

xmlns:ibts="http://www.openapplications.org/oagis/9"

但如前所述,您没有在文档中的任何位置使用ibts,因此您可以删除分配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    • 2011-10-12
    • 2011-07-18
    • 1970-01-01
    相关资源
    最近更新 更多