我正在从表创建一个新的XDocument.我必须从XSD文档验证文档并且它一直失败,因为它在不应该的时候将xmlns =""添加到其中一个元素.以下是相关代码的一部分.
XNamespace xsi = "http://www.w3.org/2001/XMLSchema-instance";
XNamespace xmlns = "https://uidataexchange.org/schemas";
XElement EmployerTPASeparationResponse = null;
XElement EmployerTPASeparationResponseCollection = new XElement(xmlns + "EmployerTPASeparationResponseCollection", new XAttribute(XNamespace.Xmlns + "xsi", xsi), new XAttribute(xsi + "schemaLocation", "https://uidataexchange.org/schemas SeparationResponse.xsd"));
XDocument doc = new XDocument(
new XDeclaration("1.0", null, "yes"), EmployerTPASeparationResponseCollection);
//sample XElement populate Element from database
StateRequestRecordGUID = new XElement("StateRequestRecordGUID");
StateRequestRecordGUID.SetValue(rdr["StateRequestRecordGUID"].ToString());
//sample to add Elements to EmployerTPASeparationResponse
EmployerTPASeparationResponse = new XElement("EmployerTPASeparationResponse");
if (StateRequestRecordGUID != null)
{
EmployerTPASeparationResponse.Add(StateRequestRecordGUID);
}
//the part where I add the EmployerTPASeparationResponse collection to the …Run Code Online (Sandbox Code Playgroud) 我有两个XSD定义不同的文档.Say A.xsd将元素定义ElementA为根,具有一些复杂的规则.现在B.xsd定义一个ElementB应该ElementA在两者之间使用的元素.
例如,我希望XML文件ElementB看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<ElementB xmlns="http://example.com/namespace/for/ElementB">
<foo>Bla</foo>
<bar>Blub</bar>
<ElementA xmlns="http://example.com/namespace/for/ElementA">
<!-- ... -->
</ElementA>
</ElementB>
Run Code Online (Sandbox Code Playgroud)
然后B.xsd可能看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns="http://example.com/namespace/for/ElementB" targetNamespace="http://example.com/namespace/for/ElementB" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="ElementB">
<xs:complexType>
<xs:sequence>
<xs:element name="foo" type="xs:string" />
<xs:element name="bar" type="xs:string" />
<!-- And now I want to include ElementA somehow -->
<xs:element name="ElementA" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
问题是,我真的不希望克隆的规格ElementA为B.xsd,因为也有文件,那只是ElementA作为根(即ElementB某种容器文件).
那么,如何在已经存在的XSD之上完全构建的同时允许ElementA内部 …
我正在创建一个xml文件,其根元素结构应该是这样的:
<RootElement xmlns="http://www.mysite.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mysite.com/abc.xsd">
Run Code Online (Sandbox Code Playgroud)
我创建了package-info.java类,但是通过编写这段代码我只能获得一个命名空间:
@XmlSchema(
namespace = "http://www.mysite.com",
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package myproject.myapp;
import javax.xml.bind.annotation.XmlSchema;
Run Code Online (Sandbox Code Playgroud)
任何的想法?
我看到一些XSD架构文档在其顶部元素中声明了a targetNamespace和xmlns:tns属性schema.例如下面的一个从这里开始.它们似乎也具有相同的字符串值.我理解的角色,targetNamespace但最重要的是xmlns:tns做什么?
<?xml version="1.0" encoding="UTF-8"?>
<schema
xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/Product"
xmlns:tns="http://www.example.org/Product"
elementFormDefault="qualified">
...
Run Code Online (Sandbox Code Playgroud) 我有一个基于JSF 1.2的webapp,我从中复制了JSTL导入
xmlns:c="http://java.sun.com/jstl/core"
Run Code Online (Sandbox Code Playgroud)
您还可以在Internet上的许多位置找到此导入.我不记得上面无论是在我以前的Web项目的工作或没有,在任何情况下,它并没有在我目前的JSF 2.0 Web应用基础工作.我收到集装箱的警告说:
警告:此页面调用带有前缀c声明的XML命名空间http://java.sun.com/jstl/core,但该命名空间不存在taglibrary.
然后我将导入更改为
xmlns:c="http://java.sun.com/jsp/jstl/core"
Run Code Online (Sandbox Code Playgroud)
... <c:forEach>在基于JSF/RichFaces的webapp中删除了所有令人头疼的问题.
这里的诀窍是什么?从JSF 1.2到2.x的JSTL导入URL是否有任何更改?或者前一行通常是错误的(在JSF中)?这两者有什么区别?
我正在XDocument尝试删除xmlns=""第一个内部节点上的属性:
<Root xmlns="http://my.namespace">
<Firstelement xmlns="">
<RestOfTheDocument />
</Firstelement>
</Root>
Run Code Online (Sandbox Code Playgroud)
所以我想要的结果是:
<Root xmlns="http://my.namespace">
<Firstelement>
<RestOfTheDocument />
</Firstelement>
</Root>
Run Code Online (Sandbox Code Playgroud)
doc = XDocument.Load(XmlReader.Create(inStream));
XElement inner = doc.XPathSelectElement("/*/*[1]");
if (inner != null)
{
inner.Attribute("xmlns").Remove();
}
MemoryStream outStream = new MemoryStream();
XmlWriter writer = XmlWriter.Create(outStream);
doc.Save(writer); // <--- Exception occurs here
Run Code Online (Sandbox Code Playgroud)
在尝试保存文档时,我得到以下异常:
在同一个start元素标记内,前缀''不能从''重新定义为' http://my.namespace '.
这甚至意味着什么,我该怎么做才能消除那些麻烦xmlns=""?
xmlns删除特定xmlns的文件,文件中没有其他属性.我尝试过使用这个问题的答案启发的代码:
inner = new XElement(inner.Name.LocalName, inner.Elements());
Run Code Online (Sandbox Code Playgroud)
调试时,该xmlns …
所以我有一个我在这里声明的xml文档:
DocumentBuilder dBuilder = dbFactory_.newDocumentBuilder();
StringReader reader = new StringReader(s);
InputSource inputSource = new InputSource(reader);
doc_ = dBuilder.parse(inputSource);
Run Code Online (Sandbox Code Playgroud)
然后我有一个函数,我传入一个字符串,我想将它与我的xml中的元素匹配:
void foo(String str)
{
NodeList nodelist = doc_.getDocumentElement().getElementsByTagName(str);
}
Run Code Online (Sandbox Code Playgroud)
问题是,当它str进入它没有任何类型的命名空间,所以我将测试的xml将是:
<Random>
<tns:node />
</Random>
Run Code Online (Sandbox Code Playgroud)
并且str将是节点.因此nodelist现在为null,因为它期望tns:node但我传入了node.我知道忽略命名空间并不好,但在这种情况下它很好.我的问题是我不知道如何在忽略命名空间的同时在Node中搜索元素.我还想过将命名空间添加到str中,但我不知道如何做到这一点.
任何帮助将不胜感激,
谢谢,-Josh
我有一些XML声明了一个仅用于属性的命名空间,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<a xmlns:x="http://tempuri.com">
<b>
<c x:att="true"/>
<d>hello</d>
</b>
</a>
Run Code Online (Sandbox Code Playgroud)
我想使用XSL创建所选节点及其值的副本 - 摆脱属性.所以我想要的输出是:
<?xml version="1.0" encoding="UTF-8"?>
<b>
<c />
<d>hello</d>
</b>
Run Code Online (Sandbox Code Playgroud)
我有一些XSL几乎可以做到这一点,但我似乎无法阻止它将名称空间声明放在输出的顶级元素中.我的XSL是:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<xsl:apply-templates select="/a/b"/>
</xsl:template>
<xsl:template match="node()">
<xsl:copy>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
输出的第一个元素是<b xmlns:x="http://tempuri.com">而不是<b>.我已经尝试在XSL中声明命名空间并将前缀放在exclude-result-prefixes列表中,但这似乎没有任何效果.我究竟做错了什么?
更新:我发现通过在XSL中声明命名空间并使用extension-element-prefixes属性工作,但这似乎不正确!我想我可以使用它,但我想知道为什么exclude-result-prefixes不起作用!
更新:实际上,这个extension-element-prefixes解决方案似乎只适用于XMLSpy的内置XSLT引擎,而不适用于MSXML.
我有一个XML文档,如下所示:
<Data
xmlns="http://www.domain.com/schema/data"
xmlns:dmd="http://www.domain.com/schema/data-metadata"
>
<Something>...</Something>
</Data>
Run Code Online (Sandbox Code Playgroud)
我正在使用PHP中的SimpleXML解析信息.我正在处理数组,我似乎遇到了命名空间的问题.
我的问题是:如何删除这些名称空间?我从XML文件中读取数据.
谢谢!
我正在使用lxml(2.2.8)来创建和编写一些XML(特别是XGMML).将要阅读它的应用程序显然相当挑剔,并希望看到一个顶级元素:
<graph label="Test" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xlink="h
ttp://www.w3.org/1999/xlink" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-
ns#" xmlns:cy="http://www.cytoscape.org" xmlns="http://www.cs.rpi.edu/XGMML" di
rected="1">
Run Code Online (Sandbox Code Playgroud)
如何xmlns:使用lxml 设置这些属性?如果我尝试明显的
root.attrib['xmlns:dc']='http://purl.org/dc/elements/1.1/'
root.attrib['xmlns:xlink']='http://www.w3.org/1999/xlink'
root.attrib['xmlns:rdf']='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
root.attrib['xmlns:cy']='http://www.cytoscape.org'
root.attrib['xmlns']='http://www.cs.rpi.edu/XGMML'
Run Code Online (Sandbox Code Playgroud)
lxml抛出一个 ValueError: Invalid attribute name u'xmlns:dc'
我过去曾经使用过很多XML和lxml来处理简单的事情,但是到目前为止还是设法避免需要知道关于命名空间的任何事情.