jjzjj

xmlns、xmlns :xsi, xsi :schemaLocation, 和 targetNamespace?

coder 2024-06-23 原文

对于以下 XML 片段:

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
                             http://maven.apache.org/xsd/maven-4.0.0.xsd">

xmlnsxmlns:xsixsi:schemaLocation 属性的确切含义是什么?它们有什么关系? : 的作用是什么?

xsi:schemaLocation=

中有 2 个 URL
  1. http://maven.apache.org/POM/4.0.0 (刚好和xmlns一样但是访问的时候报404错误。)
  2. http://maven.apache.org/xsd/maven-4.0.0.xsd (这是一个实际的 XSD 文档)

如果 1 不存在,为什么还要放在那里?

最佳答案

XML 和 XML 模式 (XSD) 中的命名空间相关属性

  • xmlnsW3C Namespaces in XML Recommendation 的一部分:

    The prefix xmlns is used only to declare namespace bindings and is by definition bound to the namespace name http://www.w3.org/2000/xmlns/.

    在您的示例中,它声明 http://maven.apache.org/POM/4.0.0 是 Maven 项目中元素的默认 namespace .

  • xmlns:xsi为 XSD 中使用的核心命名空间声明标准命名空间前缀 (xsi):http://www.w3.org/2001/XMLSchema-instance

    XML Schema: Structures also defines several attributes for direct use in any XML documents. These attributes are in a different namespace, which has the namespace name http://www.w3.org/2001/XMLSchema-instance. For brevity, the text and examples in this specification use the prefix xsi: to stand for this latter namespace; in practice, any prefix can be used.

    在您的示例中,它声明了 xsi 命名空间前缀到 http://www.w3.org/2001/XMLSchema-instance 的常规绑定(bind),它正确地设置了以下属性的使用:

    • xsi:type允许 XML 实例直接关联元素类型信息,而不是通过 XSD。参见 How to restrict the value of an XML element using xsi:type in XSD?

      在您的示例中,未使用xsi:type;包含在此处是为了有关 xsi 的完整性。

    • xsi:nil允许在 XSD 可能不允许的情况下将空元素视为有效。

      在您的示例中,未使用xsi:nil;包含在此处是为了有关 xsi 的完整性。

    • xsi:schemaLocation and xsi:noNamespaceSchemaLocation向 XML 处理器提供有关如何将 XSD 与 XML 文档相关联的提示。有命名空间时使用xsi:schemaLocation;在没有命名空间时使用 xsi:noNamespaceSchemaLocation

      在您的示例中,有一个命名空间,因此您可以正确使用 xsi:schemaLocation,其值是空格分隔的 < strong="">namespaceXSD-location-URI。您的示例使用命名空间 http://maven.apache.org/POM/4.0.0,并且命名空间是 need not be retrivable 的词法命名结构。 。您的示例还使用了 XSD-location-URI,http://maven.apache.org/xsd/maven-4.0.0.xsd,它应该是可检索的。

      如果您的示例未使用 namespace ,您将使用 xsi:noNamespaceSchemaLocation,其值为单个 XSD-location-URI这暗示了预期 XSD 的位置并且应该是可检索的。

  • targetNamespacexs:schema 根上的一个属性 XSD 的元素,它指定根元素的 namespace XSD 旨在管理的 XML 文档实例的数量。它必须 匹配那些 XML 文档根的默认或显式命名空间 元素。

关于xmlns、xmlns :xsi, xsi :schemaLocation, 和 targetNamespace?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34202967/

有关xmlns、xmlns :xsi, xsi :schemaLocation, 和 targetNamespace?的更多相关文章

  1. ruby - 如何在 Nokogiri 中使用带有 XPath 的 xmlns 声明 - 2

    我正在使用Nokogiri::XML来解析来自AmazonSimpleDB的响应。响应类似于:Foo42BarXYZ如果我直接将响应交给Nokogiri,所有XPath查询(例如doc/"//Item/Attribute[Name='Foo']/Value")都会返回一个空数组。但是,如果我从SelectResponse标记中删除xmlns属性,它就可以正常工作。我需要做一些额外的事情来解释命名空间声明吗?这种解决方法感觉非常像黑客攻击。 最佳答案 该XPath查询查找不在任何命名空间中的元素。您需要告诉您的XPath处理器您正在寻

  2. javascript - Firefox 添加 <a xmlns ="http://www.w3.org/1999/xhtml"> - 2

    编辑:这不是因为ajax调用而发生的。为了好玩,我将其更改为使用来自TinyMCE组件的值,我得到了同样的结果。content=tinyMCE.get('cComponent').getContent();//contentatthispointistestvalueToDisplay=content;如果我这样做:jQuery(selector).html(valueToDisplay);我得到:test有没有人在使用Firefox3.6.10和jQuery1.4.2之前见过这个,我正在尝试使用jQueryajax调用的结果更改链接文本。我得到了ajax调用的预期结果:functio

  3. 安卓 XML 错误 : no resource identifier found for attribute 'xmlns' in package 'android' - 2

    我知道这里有一百个问题和我一样,但似乎没有一个适合我的具体问题,所以我要问一个新问题。以防万一这是重复,我很抱歉。所以,我正在构建一个应用程序,布局给我带来了一些问题。这是我的XML代码:(尚未完成)我得到的错误是在代码的第一行它说“错误:在包'android'中找不到属性'xmlns'的资源标识符我一遍又一遍地检查代码,尝试刷新/重建项目,尝试删除该特定行等等,但似乎没有任何解决办法。那么,如果有人有一些想法?谢谢! 最佳答案 删除android:xmlns="http://schemas.android.com/apk/res/

  4. xml - 使用 vbscript 创建 XML 元素时如何避免 xmlns 属性? - 2

    添加新元素时,我看到xmlns属性添加了空字符串。我怎样才能避免这种情况?我看到的答案很少,但它们要么是Java要么是.Net。仍然尝试过那些,但它们不起作用。我需要VBScript的解决方案。'loadthexmlfileSetobjXMLDoc=CreateObject("Microsoft.XMLDOM")objXMLDoc.load(strFilePath)'getallnodesinthexmlSetmainNode=objXMLDoc.documentElement.SelectNodes("//MainError")'getchildnodesforthefirstnod

  5. xml - 如何在 Symfony XmlEncoder 中设置编码 UTF-8 和 xmlns 属性 - 2

    我使用Symfony3Serializer并通过XmlEncoder将我的对象转换为XML。但是XmlEncoder在xml序言中没有编码类型。如何解决这个问题?我可以在根元素后添加带有参数的自定义属性吗?有没有办法在根元素中设置xmlns?我需要这样的XML输出:2010-10-05T16:36:00+04:00...现在我明白了:...我的序列化程序代码片段:$xmlEncoder=newXmlEncoder('realty-feed');$normalizer=newCustomNormalizer();$serializer=newSerializer(array($norma

  6. python - 如何使用 root 中的 xmlns 从 XML 文件中获取数据 - 2

    数字.xml123@test.com222017-12-05数字.pyimportxml.etree.ElementTreeasETtree=ET.parse('number.xml')root=tree.getroot()forcountryinroot.findall('ResponseDate'):rank=country.find('emailid').textname=country.find('number').textprint(name,rank)返回空结果,但是当我将xml修改为name=而不是xmlns=时,它就可以工作了。但是,如何使这个脚本与xmlns一起工作?

  7. php - 将 rss xmlns 命名空间定义添加到 php simplexml 文档? - 2

    我正在尝试使用php5的simplexml创建一个itunes有效的播客提要:XML;$xml_generator=newSimpleXMLElement($xml_string);$tnsoundfile=$xml_generator->addChild('title','MainTitle');$tnsoundfile->addChild('itunes:author',"Author",'');$tnsoundfile->addChild('category','AudioPodcasts');$tnsoundfile=$xml_generator->addChild('item

  8. xml - 从 namespace 前缀节点中删除 xmlns 属性 - 2

    我正在尝试使用XSLT创建EdgeSideIncludeshtmlblock。这是一个示例XSLTsometextgoeshere虽然转换本身有效,但输出是这样的:sometextgoeshere问题是,xmlns:esi属性可怕地破坏了ESI的执行。如果我手动删除该属性(例如:打开HTML并将其删除,再次保存代码块)一切正常。问题:如何从HTML输出中删除xmlns:esi?我尝试将其包含在exclude-results-prefixes中,但没有成功。将起作用的示例输出:sometextgoeshere 最佳答案 Questio

  9. 以 "important"结尾的 XML XMLNS # - 2

    在名为install.rdf的MozillaExtensions文件中,有一行内容为那些#字符重要吗,或者它们的用途是什么?见:https://developer.mozilla.org/en/install_manifests 最佳答案 片段标识符是URL的一部分(所以是的,它很重要)并表示URL指的是抽象资源而不是文档。这是RDF标准的一部分,至少它是在1990年代后期设计install.rdf格式时制定的。参见http://www.w3.org/DesignIssues/Fragment.html以获得解释,特别是:Itisi

  10. xml - 输入 xml 文件定义或不存在 xmlns 的 XSL 转换 - 2

    我有一个xml输入,有时可能有或可能没有定义xmlns。如何解决这种情况,只有一个xsl才能成功转换?以下是两种情况下的输入和xsl(1.0)输入文件:10没有命名空间定义的XSL:输入定义了命名空间的xml:10虽然xslt没有抛出错误,但输出没有按预期转换:(如何使用单个xsl或任何想法来处理上述情况。 最佳答案 如果您需要处理具有特定本地名称的任何元素,而不管XSLT1.0中的namespace如何,那么您需要使用像*[local-name()='Object']这样的习惯用法,或者或者,您可以将模式基于结构而不是名称(即,不

随机推荐