标签: xml-namespaces

WPF - 全局添加xaml名称空间声明

我有一个很大的WPF应用程序,有很多XAML文件.每个XAML文件都有5到10个clr到xml命名空间映射xmlns:abc="clr-namespace:Abcdef".
它看起来很糟糕,并且在每个文件中写入都很痛苦.

有没有办法在全球范围内定义?

wpf xaml xml-namespaces

12
推荐指数
1
解决办法
4682
查看次数

使用没有ns2前缀的JDK的JAXB

在Oracle论坛,Stackoverflow,java.net上阅读了有关此内容的所有帖子后,我终于在这里发帖了.我正在使用JAXB来创建XML文件,但问题是它在我的元素之前添加了着名的ns2前缀,我已经尝试了所有没有人为我工作的解决方案.java -version给出"1.6.0_37"

解决方案1:使用package-info.java

我在我的包中创建了包含带有以下内容的@ Xml*注释类的文件:

@XmlSchema(
    namespace = "http://mynamespace",
    elementFormDefault = XmlNsForm.QUALIFIED,
    xmlns = {
        @XmlNs(namespaceURI = "http://mynamespace", prefix = "")
    }
)
package com.mypackage;
import javax.xml.bind.annotation.XmlNs;
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;
Run Code Online (Sandbox Code Playgroud)

解决方案2:NamespacePrefixMapper

我创建了以下类并将映射器设置为marshaller:

// Change mapper to avoid ns2 prefix on generated XML
class PreferredMapper extends NamespacePrefixMapper {
    @Override
    public String getPreferredPrefix(String namespaceUri, String suggestion, boolean requirePrefix) {
        return "";
    }
}
NamespacePrefixMapper mapper = new PreferredMapper();
try {
    marshaller.setProperty("com.sun.xml.bind.namespacePrefixMapper", mapper);
}
catch (PropertyException e) {
   logger.info("No property …
Run Code Online (Sandbox Code Playgroud)

jaxb xml-namespaces

12
推荐指数
1
解决办法
7857
查看次数

如何为XDocument指定xmlns?

我试过了:

textBox1.Text = new XDocument(new XDeclaration("1.0", "UTF-8", "yes"),
    new XElement("root1", new XAttribute( "xmlns", @"http://example.com"), new XElement("a", "b"))
).ToString();
Run Code Online (Sandbox Code Playgroud)

但我得到:

The prefix '' cannot be redefined from '' to 'http://example.com' within the same start element tag.
Run Code Online (Sandbox Code Playgroud)

我也试过替换(根据我发现的答案):

XAttribute(XNamespace.Xmlns,...
Run Code Online (Sandbox Code Playgroud)

但也有错误.

注意:我不是要在文档中使用多个xmlns.

.net c# xml linq-to-xml xml-namespaces

12
推荐指数
1
解决办法
2万
查看次数

JAXB将不需要的名称空间声明附加到标记

我正在实现一个自制的XMPP子协议,我正在使用StAX和JAXB的组合来解析/编组消息.当我编组一条消息时,我最终会遇到大量不需要的命名空间声明:

   <ns2:auth xmlns:ns2="urn:ietf:params:xml:ns:ilf-auth" 
   xmlns:ns4="ilf:iq:experiment:power" xmlns:ns3="ilf:iq:experiment:init" 
   xmlns:ns5="ilf:iq:experiment:values" xmlns:ns6="ilf:iq:experiment:result" 
   xmlns:ns7="ilf:iq:experiment:stop" xmlns:ns8="ilf:iq:experiment:end">
   compton@ilf</ns2:auth>
Run Code Online (Sandbox Code Playgroud)

代替:

   <ns:auth xmlns:ns="urn:ietf:params:xml:ns:ilf-auth>compton@ilf</ns:auth>
Run Code Online (Sandbox Code Playgroud)

有什么办法可以转变吗?

所有这些命名空间都用在由JAXB编组/解组的不同消息中,但每条消息都使用一个命名空间.

PS.我不是XML专家,如果我犯了一些愚蠢的错误,请不要骂我;)

java xml jaxb xml-namespaces jaxb2

11
推荐指数
1
解决办法
4573
查看次数

什么是jQuery for Document.createElementNS()?

什么是jQuery for Document.createElementNS()?

function emleGraphicToSvg(aGraphicNode) {
  var lu = function luf(aPrefix){
    switch (aPrefix){
      case 'xhtml': return 'http://www.w3.org/1999/xhtml';
      case 'math':  return 'http://www.w3.org/1998/Math/MathML';
      case 'svg':   return 'http://www.w3.org/2000/svg';
      }
    return '';
    };
  var svg = document.evaluate("svg:svg",
    aGraphicNode, lu, XPathResult.FIRST_ORDERED_NODE_TYPE, null).
    singleNodeValue;
  $(svg).children().remove();
  rect = document.createElementNS(lu('svg'), "rect");
  rect.setAttribute("x", "35");
  rect.setAttribute("y", "25");
  rect.setAttribute("width", "200");
  rect.setAttribute("height", "50");
  rect.setAttribute("class", "emleGraphicOutline");
  svg.appendChild(rect);
  }
Run Code Online (Sandbox Code Playgroud)

该代码是Emle的简化片段- 电子数学实验室设备 JavaScript文件emle_lab.js.

Look-Up-Function luf()将完整引用映射到XPath字符串中的命名空间的缩短名称createElementNS().现有svg:svg的位置,删除并替换为新的矩形.

jquery xml-namespaces

11
推荐指数
2
解决办法
4972
查看次数

为什么在正确使用fbml xmlns时遇到<fb:xxx> fbml元素时ie显然会重排DOM?

我有一个包含许多facebook"Like"按钮的页面,使用内联fbml技术嵌入(而不是iframe).很简单.页面渲染正常,一切都按预期工作.

然而...

一旦我将xmlns:fb="http://www.facebook.com/2008/fbml"名称空间声明添加到文档中,我注意到IE中初始页面呈现时间的急剧下降.仔细检查(使用ie8开发人员工具)显示整个DOM在页面初始加载后的短时间内反复出现"刷新"或"回流".一些进一步的捣乱揭示了回流的数量显然与<fb:xxx>文件中的元素数量成比例.

删除xmlns声明会使问题消失.

以前有人经历过吗?

更新:

一些进一步的挖掘揭示了一些更具体的问题......问题确实是IE正在重新流动页面,包括重新执行任何内联脚本等等.原因似乎并不包含xmlns本身,而是按钮本身的xfbml呈现.添加xmlns只是触发了xfbml渲染,没有xmlns,按钮从未在第一时间呈现.以下标记说明了该问题.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" xmlns:fb="http://www.facebook.com/2008/fbml">
  <head>  
    <script type="text/javascript">
      alert('some inline js');
    </script>
  </head>
  <body>
    <div id="fb-root"></div>

    <div>
      <fb:like href="http://example.local/1" layout="button_count" show_faces="false" width="80" action="like" font="arial" colorscheme="light"></fb:like>
      <fb:like href="http://example.local/2" layout="button_count" show_faces="false" width="80" action="like" font="arial" colorscheme="light"></fb:like>
      <fb:like href="http://example.local/3" layout="button_count" show_faces="false" width="80" action="like" font="arial" colorscheme="light"></fb:like>
    </div>

    <script src="http://connect.facebook.net/en_US/all.js#xfbml=1" type="text/javascript"></script>

  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

当在ie中运行时,上面的示例生成3个警报,我希望只看到一个.

internet-explorer xml-namespaces repaint reflow fbml

11
推荐指数
1
解决办法
1456
查看次数

Java XPath:获取与查询匹配的所有元素

我想对此XML文件进行XPath查询(摘录显示):

<?xml version="1.0" encoding="UTF-8"?>
<!-- MetaDataAPI generated on: Friday, May 25, 2007 3:26:31 PM CEST -->
<Component xmlns="http://xml.sap.com/2002/10/metamodel/webdynpro" xmlns:IDX="urn:sap.com:WebDynpro.Component:2.0" mmRelease="6.30" mmVersion="2.0" mmTimestamp="1180099591892" name="MassimaleContr" package="com.bi.massimalecontr" masterLanguage="it">
...
    <Component.UsedModels>
        <Core.Reference package="com.test.test" name="MasterModel" type="Model"/>
        <Core.Reference package="com.test.massimalecontr" name="MassimaleModel" type="Model"/>
        <Core.Reference package="com.test.test" name="TravelModel" type="Model"/>
    </Component.UsedModels>
...
Run Code Online (Sandbox Code Playgroud)

我正在使用这段代码:

DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(true);
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document document = builder.parse(new File("E:\\Test branch\\test.wdcomponent"));
XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();

xpath.setNamespaceContext(new NamespaceContext() {
...(omitted)

System.out.println(xpath.evaluate(
    "//d:Component/d:Component.UsedModels/d:Core.Reference/@name", 
    document));
Run Code Online (Sandbox Code Playgroud)

我期待得到的:

MasterModel
MassimaleModel
TravelModel
Run Code Online (Sandbox Code Playgroud)

我得到了什么:

MasterModel
Run Code Online (Sandbox Code Playgroud)

似乎只返回第一个元素.如何获取与查询匹配的所有匹配项?

java xml xpath namespaces xml-namespaces

11
推荐指数
1
解决办法
3万
查看次数

使用xpath-default-namespace定义在XSL XPath中使用的默认命名空间

我有这个简单的xml文档:

<?xml version='1.0' encoding='UTF-8'?>
<registry xmlns="http://www.iana.org/assignments" id="character-sets">
     <registry id="character-sets-1">
       <record>
         <name>ANSI_X3.4-1968</name>
      </record>
     </registry>
</registry>
Run Code Online (Sandbox Code Playgroud)

当我使用这个xsl时,我可以提取名称:

<?xml version="1.0" encoding="UTF-8"?>
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:my="http://www.iana.org/assignments" version="1.0">
  <xsl:template match="/my:registry">
      <xsl:copy-of select="//my:record/my:name"/>
  </xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

但是,如果我省略了xsl xpath-selectors中的命名空间,我得不到输出:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:my="http://www.iana.org/assignments" xpath-default-namespace="http://www.iana.org/assignments" version="1.0">
  <xsl:template match="/registry">
       <xsl:copy-of select="//record/name"/>
  </xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

我认为xpath-default-namespace意味着要做的伎俩.我错过了什么?

如果库版本很重要我有

libexpat1(> = 1.95.8)

libxerces-C3.1

libxml2(> = 2.7.4)

libxslt1.1(> = 1.1.25)

xslt xpath xml-namespaces

11
推荐指数
1
解决办法
8867
查看次数

为什么AngularJS不建议使用XML命名空间?

AngularJS指令ng-以它们为前缀.为什么它坚持使用前缀而不是使用实际的xml命名空间?

来自AngularJS的文档:

如果您选择使用旧样式指令语法ng:那么在html中包含xml-namespace以使IE感到满意.(这是出于历史原因,我们不再推荐使用ng:.)

使用这样的东西似乎工作:

<html xmlns:ng="http://angularjs.org" ng:app="my-app">
Run Code Online (Sandbox Code Playgroud)

这个jsFiddle可以看出这一点.

但它不建议使用它并仅仅因为历史原因而支持它.有人能指出我的原因是什么吗?来自Flex背景,我认为XML命名空间很棒,我很乐意使用它们,但也许Angular有充分理由采用前缀方法?

javascript xml xml-namespaces angularjs

11
推荐指数
1
解决办法
1961
查看次数

Android - 前缀"xmlns"不能显式绑定到任何名称空间; "xmlns"的命名空间也不能明确地绑定到任何前缀

是否有人遇到这个"xmlns"命名空间问题(见下文)?我不能再建立我的工作项目了.

  • 起初我以为这是我的git分支,所以我切换到原点开发和主分支 - 问题仍然存在.
  • 我清理并重建了我的项目 - 问题仍然存在.
  • 我清理并同步了我的成绩文件 - 问题仍然存在.
  • 最后我尝试重新安装Android Studio并重新创建我的git存储库 - 问题仍然存在.

    The prefix "xmlns" cannot be bound to any namespace explicitly; neither can the namespace for "xmlns" be bound to any prefix explicitly.
    Error: The prefix "xmlns" cannot be bound to any namespace explicitly; neither can the namespace for "xmlns" be bound to any prefix explicitly.
    :{project}:mergeReleaseResources FAILED
    Execution failed for task ':{project}:mergeReleaseResources'.
    > {project}/build/intermediates/incremental/mergeResources/release/merger.xml:1:61: Error: The prefix "xmlns" cannot be bound to any namespace explicitly; neither …
    Run Code Online (Sandbox Code Playgroud)

git android xml-namespaces gradle android-studio

11
推荐指数
1
解决办法
3517
查看次数