我正在尝试开发一个模式来验证我继承的一些现有XML文件。我想让模式尽可能多地完成验证工作。挑战在于属性和元素取决于其他属性的值。真实数据非常抽象,因此我创建了一些简单的示例。假设我有以下XML文件:LondonJungle如果生物的“类型”是“人类”,我将有一个“国籍”属性和一个“地址”子元素。如果生物的“类型”是“动物”,我将有一个“物种”属性和一个“栖息地”子元素。就此示例而言,带有“物种”或“栖息地”的“人”是无效的-带有“国籍”或“地址”的“动物”也是如此。如果“Creature”不是根元素,我可能会在根元素下方有两个不同的“Creature”选项,但是当“Creature”是
我在targetNameSpace中定义了一个complexType,比如"http://xyz.example.com"并在很多地方使用。现在我想在我新创建的具有不同命名空间的XSD中使用它,比如"http://abc.example.com"。我可以这样做吗?还是我必须使用相同的命名空间? 最佳答案 一个模式只能有一个目标命名空间。至于您的具体问题,如果您的复杂类型位于不同的命名空间中,那么它将是不同的类型。使类型唯一的是名称和命名空间的组合,而不是它的定义。您可以将定义此类型的模式导入到其他模式中,并且可以在包含来自两个模式的
给定此xml架构(片段):在这个xml片段中:string1string2string3元素可以以任何顺序出现吗?因此,这两个XML片段在语义上是否相同:string1string2string3string3string2string1或者模式中的序列元素是否意味着元素必须以相同的顺序出现才能在语义上等效?模式中存在的是否要求解析器/反序列化器按照它们在xml文本中存在的顺序保持元素?如果我理解正确,通常(即没有架构)不需要这样做(即使大多数解析器通常这样做)。 最佳答案 Sequence元素意味着单个元素(不是数组中的元素)应该
让我们考虑以下XML模式:和相应的XML示例:有没有办法保证的顺序元素被保留?我想确保任何读取XML的解析器都会以指定的顺序返回书籍,首先是带有title="t1"的书。,然后是title="t2"的书,最后是title="t3"的书.据我所知,XML解析器不需要保持顺序。我想知道是否可以通过XMLSchema强制执行此操作?对我来说,一个快速的解决方案是添加index属性为元素,并将顺序保存委托(delegate)给读取XML的应用程序。评论?有什么建议吗? 最佳答案 根据MichaelKay的说法,他似乎是XML世界中的重要人物
XJC似乎完全忽略了我的XML模式元素上的mixed="true",因此不允许我提取文本内容。从下面的示例XML中,我需要能够提取“标题文本”。如果不识别mixed="true",则不会创建访问器,也不会从XML中解码:TitleText这是一个完整但最小化的模式来演示问题:请注意,在上面我有mixed="true"。尽管如此,生成的架构片段不包含对它的引用,生成的类也不使用XmlMixed注释,也不包含值或内容访问器:/***JavaclassforSTcomplextype.**Thefollowingschemafragmentspecifiestheexpectedconten
我有一个XSD文件和一个XML文件,如何检查XML是否像XSD文件一样处于正确的架构中?我知道XmlDocument类中有一个验证函数,但它需要一个事件处理程序我需要的只是真或假。附言我在VisualStudio2010中工作。 最佳答案 有一个更简单的方法:privatevoidValidationCallBack(objectsender,ValidationEventArgse){thrownewException();}publicboolvalidate(stringsxml){try{XmlDocumentxmld=ne
我想测试(真或假)任意XML文件是否与给定模式匹配。就其值(value)而言,该架构是Word2003WordML架构,Microsoft使用大约7个*.xsd文件的列表对其进行定义。其中一个文件还包含W3Cxml.xsd文件,方法是包含以下语句:我正在使用如下所示的.NET代码进行验证:publicstaticvoidvalidate(stringfilename){XmlReaderSettingssettings=newXmlReaderSettings();settings.Schemas.Add("http://schemas.microsoft.com/office/wor
中兴设备命令模式包括以下几种:一、用户模式当使用超级终端方式或Telnet/SSH方式登录交换机时,用户输入登录的用户名和密码后即进入用户模式。用户模式的提示符是交换机的主机名后跟一个“>”号。zte>默认的主机名是zte,在全局配置模式下,用户可以使用">hostname(name的长度不超过200个字符)命令改变主机名。在用户模式下可以执行exit命令退出交换机配置,还可以执行show命令查看系统的配置信息和运行信息。show命令可以在所有模式下执行。二、全局配置模式在用户模式下输入enable命令和相应口令后,即可进入全局配置模式。zte>enablePassword:***zte(cf
我定义了两种复杂的元素类型-Developer和App。开发者child-ID、姓名、电子邮件应用子项-ID、名称、开发人员这里App复杂元素中的Developer是指Developer/ID。如何在xml模式中定义这种关系。我正在使用XMLspy2013编辑器。我尝试在简单类型Developer->ID的声明中指定名称。并在App->Developer数据类型中使用此名称。但它给出了错误..******* 最佳答案 开发者id使用普通简单类型的方法是在开头声明为命名类型:...然后使用它:.........但这不足以创建一个约束,
如果我创建一个需要模式1.1特性的XML模式(尤其是微妙的特性,比如删除一个限制基本类型的可选元素),最好的方式是什么来指示这个模式不应该与一个处理器一起使用只理解1.0版?在XSLT样式表文件中,可以使用version属性指示所使用的XSLT规范的版本。但是在XSD文件中,version属性没有这个含义-它是一个自由格式的属性,它说明了模式的版本,而不是规范的版本正在使用中。是否需要标记使用1.1功能的架构?我有一组使用FPML5.5规范和一些自定义模式的复杂模式,并且无法使用某些模式验证器对其进行验证,但我不确定这是因为验证器有错误还是因为模式被巧妙地使用xml模式1.1功能。