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

验证XML子元素的相关工作

司马念
2023-03-14

我目前正在处理一些遗留代码,其中有一些C++类生成字符串格式的XML元素。

我正在考虑一种通过验证生成的XML来单元测试这些类的方法(我使用的是XercesC++)。问题是,我无法引用来自不同于根的另一个模式的元素。

这是我正在做的更详细的描述:

<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns="http://acme/2014/test"
            xmlns:foo="http://acme/2014/foo"
            targetNamespace="http://acme/2014/test"
            elementFormDefault="qualified">
  <xsd:import namespace="http://acme/2014/foo" schemaLocation="foo.xsd"/>
  <xsd:complexType name="TestType">
    <xsd:choice minOccurs="1" maxOccurs="1">
      <xsd:element ref="foo:booIsNotRoot"/>
    </xsd:choice>
  </xsd:complexType>
  <xsd:element name="test" type="TestType"/>
</xsd:schema>
<test xmlns="xmlns="http://acme/2014/test"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:foo="http://acme/2014/foo
      xsi:schemaLocation="http://acme/2014/test test.xsd">
  (code generated by BooGenerator prefixed with 'foo')
</test>

共有1个答案

华阳秋
2023-03-14
Basically my question is whether or not there is way to validate a non-root 
element according to a given XSD schema.

从理论上讲,是的,第5.2节评估XSD建议的模式有效性允许非根元素有效性评估。(感谢C.M.Sperberg-McQueen指出了这一点。)

实事求是地说,不,不是直接的。XML模式工具倾向于针对XML文档进行验证--不是选定的,是单独的元素--而XML文档必须有一个根元素。也许您可以将您希望验证的元素嵌入到一个经过操纵的上下文中,该上下文模拟元素的祖先,直到文档的适当根元素。

如果我引用foo.xsd中的根元素,它就能工作。

    null
 类似资料:
  • 下面是XSD。 下面是xml文件。 当尝试使用http://www.utilities-online.info/xsdvalidation验证它时,我得到以下错误 第2行62:org.xml.sax.SAXParseException;行号:2;列号:62;CVC-ELT.1:找不到元素“Message”的声明。

  • 我希望将XML反序列化为Java Pojo,但我不需要所有元素,并且我希望避免创建样板包装类来获取一些子元素 例如-->现在不起作用

  • 在我的一个项目中,我们支持使用XML进行数据输入。由于XML是一个用户输入文件,它很有可能是一个有效的XML,但有一些语义错误(例如字符串长度大于允许的限制等)。 目前我正在使用javax。xml。验证。Validator验证给定文档,但即使一个元素有语义错误,也会失败。我想要的是能够跳过这些元素,而不是跳过整个XML。我知道我们可以为验证器设置一个错误处理程序,我可以在其中跳过此类错误,但这意味

  • 考虑到此XML: 我只想验证“祖父”及其属性,而忽略XML的其余部分。为此,我在模式中添加了这一行:type=“xs:anyType” 正在使用的XSD如下所示: 我怎能无视“父亲”下面的一切?

  • 我正在尝试创建包含另一个XML的XML文档,比如child。 首先,我有一个对象Foo,它有一些属性。我用这个函数序列化它: 在另一个我无法访问Foo类的类中,我需要用这个Foo字符串在xml文档中保存一些数据。所以我有另一个像这样的物体: 当我序列化这个Bar对象并像xml文档一样保存它时。对于FooString元素,我得到了类似的结果。 我明白这个超文本标记语言字符实体(

  • 验证 UI 元素是否出现在网页上,是最常见的自动化测试任务之一。Selenese 有多种手段来检查 UI 元素。重要的是,你要了解这些不同的方法,因为这些方法定义了你的测试行为。 例如,你会测试…… 元素是否出现在页面上? 特定的文本是否出现在页面上? 特定的文本是否出现页面的指定位置? 例如,如果您正在测试一个文本标题,文本和它的位置在页面的顶部,对于你的测试可能很重要。然而,如果您正在测试一个