对于以下 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">
xmlns、xmlns:xsi 和 xsi:schemaLocation 属性的确切含义是什么?它们有什么关系? : 的作用是什么?
xsi:schemaLocation=
xmlns一样但是访问的时候报404错误。)如果 1 不存在,为什么还要放在那里?
最佳答案
xmlns是 W3C 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="">namespace 和 XSD-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 的位置并且应该是可检索的。
targetNamespace是 xs:schema 根上的一个属性
XSD 的元素,它指定根元素的 namespace
XSD 旨在管理的 XML 文档实例的数量。它必须
匹配那些 XML 文档根的默认或显式命名空间
元素。
关于xmlns、xmlns :xsi, xsi :schemaLocation, 和 targetNamespace?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34202967/
我正在使用Nokogiri::XML来解析来自AmazonSimpleDB的响应。响应类似于:Foo42BarXYZ如果我直接将响应交给Nokogiri,所有XPath查询(例如doc/"//Item/Attribute[Name='Foo']/Value")都会返回一个空数组。但是,如果我从SelectResponse标记中删除xmlns属性,它就可以正常工作。我需要做一些额外的事情来解释命名空间声明吗?这种解决方法感觉非常像黑客攻击。 最佳答案 该XPath查询查找不在任何命名空间中的元素。您需要告诉您的XPath处理器您正在寻
编辑:这不是因为ajax调用而发生的。为了好玩,我将其更改为使用来自TinyMCE组件的值,我得到了同样的结果。content=tinyMCE.get('cComponent').getContent();//contentatthispointistestvalueToDisplay=content;如果我这样做:jQuery(selector).html(valueToDisplay);我得到:test有没有人在使用Firefox3.6.10和jQuery1.4.2之前见过这个,我正在尝试使用jQueryajax调用的结果更改链接文本。我得到了ajax调用的预期结果:functio
我知道这里有一百个问题和我一样,但似乎没有一个适合我的具体问题,所以我要问一个新问题。以防万一这是重复,我很抱歉。所以,我正在构建一个应用程序,布局给我带来了一些问题。这是我的XML代码:(尚未完成)我得到的错误是在代码的第一行它说“错误:在包'android'中找不到属性'xmlns'的资源标识符我一遍又一遍地检查代码,尝试刷新/重建项目,尝试删除该特定行等等,但似乎没有任何解决办法。那么,如果有人有一些想法?谢谢! 最佳答案 删除android:xmlns="http://schemas.android.com/apk/res/
添加新元素时,我看到xmlns属性添加了空字符串。我怎样才能避免这种情况?我看到的答案很少,但它们要么是Java要么是.Net。仍然尝试过那些,但它们不起作用。我需要VBScript的解决方案。'loadthexmlfileSetobjXMLDoc=CreateObject("Microsoft.XMLDOM")objXMLDoc.load(strFilePath)'getallnodesinthexmlSetmainNode=objXMLDoc.documentElement.SelectNodes("//MainError")'getchildnodesforthefirstnod
我使用Symfony3Serializer并通过XmlEncoder将我的对象转换为XML。但是XmlEncoder在xml序言中没有编码类型。如何解决这个问题?我可以在根元素后添加带有参数的自定义属性吗?有没有办法在根元素中设置xmlns?我需要这样的XML输出:2010-10-05T16:36:00+04:00...现在我明白了:...我的序列化程序代码片段:$xmlEncoder=newXmlEncoder('realty-feed');$normalizer=newCustomNormalizer();$serializer=newSerializer(array($norma
数字.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一起工作?
我正在尝试使用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
我正在尝试使用XSLT创建EdgeSideIncludeshtmlblock。这是一个示例XSLTsometextgoeshere虽然转换本身有效,但输出是这样的:sometextgoeshere问题是,xmlns:esi属性可怕地破坏了ESI的执行。如果我手动删除该属性(例如:打开HTML并将其删除,再次保存代码块)一切正常。问题:如何从HTML输出中删除xmlns:esi?我尝试将其包含在exclude-results-prefixes中,但没有成功。将起作用的示例输出:sometextgoeshere 最佳答案 Questio
在名为install.rdf的MozillaExtensions文件中,有一行内容为那些#字符重要吗,或者它们的用途是什么?见:https://developer.mozilla.org/en/install_manifests 最佳答案 片段标识符是URL的一部分(所以是的,它很重要)并表示URL指的是抽象资源而不是文档。这是RDF标准的一部分,至少它是在1990年代后期设计install.rdf格式时制定的。参见http://www.w3.org/DesignIssues/Fragment.html以获得解释,特别是:Itisi
我有一个xml输入,有时可能有或可能没有定义xmlns。如何解决这种情况,只有一个xsl才能成功转换?以下是两种情况下的输入和xsl(1.0)输入文件:10没有命名空间定义的XSL:输入定义了命名空间的xml:10虽然xslt没有抛出错误,但输出没有按预期转换:(如何使用单个xsl或任何想法来处理上述情况。 最佳答案 如果您需要处理具有特定本地名称的任何元素,而不管XSLT1.0中的namespace如何,那么您需要使用像*[local-name()='Object']这样的习惯用法,或者或者,您可以将模式基于结构而不是名称(即,不