xsd 相关问题

XSD通常是指以W3C XML Schema格式编写的文档,其中包含特定类型的XML文档的描述。

如何使用 schemaLocation 或 noNamespaceSchemaLocation 将 XML 链接到 XSD?

我找到了一些解决这个问题的技巧,但仍然没有帮助我。 这是我的 XML 我找到了一些解决这个问题的技巧,但仍然没有帮助我。 这是我的 XML <?xml version="1.0" encoding="UTF-8"?> <work xmlns="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.w3.org/2001/XMLSchema-instance" tns:schemaLocation="myXSDSchema.xsd"> <tns:Objects> <tns:Object Name=":" Location=":"> </tns:Object> </tns:Objects> </work> 这是我的 XSD 文件: <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:tns = "http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> (some checks) </schema> 我的 XSD 文件位于与 XML 相同的文件夹中。 如何链接这两个文件? How to link an XSD to an XML document depends on the XML document is using namespaces or not... 没有命名空间 使用 xsi:noNamespaceSchemaLocation 提供有关要使用的 XSD 的提示: XML <root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="example.xsd"> <!-- ... --> </root> XSD <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="root"> <!-- ... --> </xsd:element> </xsd:schema> With 命名空间 使用 xsi:schemaLocation 提供有关要使用的 XSD 的提示: XML <ns:root xmlns:ns="http://example.com/ns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://example.com/ns example-ns.xsd"> <!-- ... --> </ns:root> XSD <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://example.com/ns"> <xsd:element name="root"> <!-- ... --> </xsd:element> </xsd:schema>

回答 1 投票 0

Error: Unable to run code with xmlschema after build with pyinstaller

我是 xmlschema 和 pyinstaller 的新手,需要一些帮助来解决我遇到的错误。 我已经在 Python 3.6.8 中下载了 xmlschema (1.9) 和 pyinstaller (4.7)。 在我的 python 脚本中,我 h...

回答 3 投票 0

我在哪里可以找到 WebStorm 会喜欢的 XUL 的 XSD/DTD?

我正在尝试使用 JetBrains 的 WebStorm IDE 来处理我的 Mozilla Thunderbird 扩展。这可没给我这么轻松的时间……但最糟糕的是关于我的 XUL 文件的所有错误消息……

回答 0 投票 0

BizTalk LDAP 请求平面文件。如何在地图中做到这一点?

我正在使用 LDAP 请求根据要求获取 AD 数据。请求的结果是 xml 文档(缺少结果的模式。包含结果/XMLD 的消息...

回答 0 投票 0

使用 Schematron 进行 XML 验证

您是否知道使用 Schematron 验证 XML 文件的任何 C#/NET 库。 我搜索但找不到任何东西。 感谢您的帮助。 安东尼 我尝试使用 Schematron.NET 库,但是

回答 2 投票 0

XmlSerializer 更改/覆盖 DateTime 格式

我有一个 XSD,其中包含 DateTime 类型的定义,如下所示: ...

回答 1 投票 0

How to Create XML from XSD where Schema is in multiple XSD

我需要从 XSD 文件创建 XML 文件。但它的架构存在于多个 XSD 中。我已经尝试使用 ECLIPSE IDE 进行 tp 创建。请帮我摆脱这个.. 为 CREATEE_ABC_REQ 两个生成 XML ...

回答 0 投票 0

SAXParseException: cvc-pattern-valid: Value 'true' is not facet-valid respect to pattern '0|1' for type '#AnonType_mustUnderstand'

我正在开发一个从 XSD 文件生成类的 java 项目 为此,我正在使用 jaxb2-maven-plugin 我有一个导入以下架构的 XSD 文件 我正在开发一个从 XSD 文件生成类的 Java 项目 为此,我正在使用 jaxb2-maven-plugin 我有一个导入以下架构的 XSD 文件 <xs:import namespace="http://schemas.xmlsoap.org/soap/envelope/" schemaLocation="http://schemas.xmlsoap.org/soap/envelope/"/> 运行该插件时出现错误 SAXParseException: cvc-pattern-valid: Value 'true' is not facet-valid with respect to pattern '0|1' for type '#AnonType_mustUnderstand'. 有什么想法吗? 我必须使用 SOAP 1.1,看来问题与该属性中定义的模式有关 <xs:attribute name="mustUnderstand"> <xs:simpleType> <xs:restriction base="xs:boolean"> <xs:pattern value="0|1"/> </xs:restriction> </xs:simpleType> </xs:attribute> 我试图复制导入的模式并删除属性“mustUnderstand”内的模式或找到另一个插件

回答 0 投票 0

Outlook 中内容控件的 XML 模式。保存到 NormalEmail.dotm 文件

所以我最近了解到 MS Word 中的内容控件可以映射到 XML 模式,这将更新映射到它的其他内容控件。我有这个想法在普通中保存快速零件......

回答 0 投票 0

在 Net Core 中为 XML 添加不同的 Namespace 前缀和属性

我想将多个名称空间前缀和属性添加到 Net6 Core API 中的现有 XML。 我有以下内容: 我想将多个名称空间前缀和属性添加到 Net6 Core API 中的现有 XML。 我有以下内容: <?xml version="1.0" encoding="UTF-8"?> <note xmlns="http://test.co.uk" xmlns:temp="http://tes007.co.uk" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Header> <Title>Hello</Title> </Header> <PutData> <Credentials> <Username>Test</Username> <Password>1234</Password> </Credentials> <Payload> <Filename>test.xml</Filename> <FileType>Xml</FileType> </Payload> <message> <title>Title1</title> <body></body> </message> </PutData> </note> 我想要实现的是: <?xml version="1.0" encoding="UTF-8"?> <note xmlns="http://test.co.uk" xmlns:temp="http://tes007.co.uk" xmlns:xsi="http://test0010.com.br"> <xsi:Header> <Title>Hello</Title> </xsi:Header> <temp:PutData> <Credentials> <Username>Test</Username> <Password>1234</Password> </Credentials> <Payload> <Filename>test.xml</Filename> <FileType>Xml</FileType> </Payload> <message Type="TEST007"> <title>Title1</title> <body></body> </message> </temp:PutData> </note> 我试过类似的东西: XmlDocument doc = XmlDocument.LoadXml(xml); var xPath = "//*" //all nodes foreach(XmlElement node in doc.SelectNodes(xPath)) { if(node.Name == "Header") { node.Prefix = "xsi"; node.RemoveAttribute("xmlns"); } if(node.Name == "PutData") { node.Prefix = "temp"; node.RemoveAttribute("xmlns"); } } 以上内容部分适用于前缀。 我知道我们有类似的问题,但没有一个对我有用。感谢您的帮助,谢谢。 以下 XSLT 3.0 转换更改了 PutData 元素的名称空间并保持其他一切不变: <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="3.0"> <xsl:mode on-no-match="shallow-copy"/> <xsl:template match="*:PutData"> <xsl:element name="temp:PutData" namespace="http://tes007.co.uk"> <xsl:apply-templates/> </xsl:element> </xsl:template> </xsl:transform> 如果您更喜欢使用 Microsoft 提供的工具,也可以使用 XSLT 1.0 来完成。 正如评论者指出的那样,.NET 中的System.Xml API 不能做你想做的事,你必须使用System.Xml.Linq API(XDocument,XElement 等): var xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> <note xmlns=\"http://test.co.uk\" xmlns:temp=\"http://tes007.co.uk\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"> <Header> <Title>Hello</Title> </Header> <PutData> <Credentials> <Username>Test</Username> <Password>1234</Password> </Credentials> <Payload> <Filename>test.xml</Filename> <FileType>Xml</FileType> </Payload> <message> <title>Title1</title> <body></body> </message> </PutData> </note>"; var xdoc = XDocument.Parse(xml); var xdocAttributes = xdoc.Root.Attributes(); var xsiNs = xdocAttributes.First(n => n.Name.LocalName == "xsi"); var tempNs = xdocAttributes.First(n => n.Name.LocalName == "temp"); xsiNs.Value = "http://test0010.com.br"; var header = xdoc.Descendants().First(d => d.Name.LocalName == "Header"); header.Name = XName.Get("Header", xsiNs.Value); var putData = xdoc.Descendants().First(d => d.Name.LocalName == "PutData"); putData.Name = XName.Get("PutData", tempNs.Value); var message = xdoc.Descendants().First(m => m.Name.LocalName == "message"); message.Add(new XAttribute("Type", "TEST007")); 使用xdoc.ToString()会给你: <note xmlns="http://test.co.uk" xmlns:temp="http://tes007.co.uk" xmlns:xsi="http://test0010.com.br"> <xsi:Header> <Title>Hello</Title> </xsi:Header> <temp:PutData> <Credentials> <Username>Test</Username> <Password>1234</Password> </Credentials> <Payload> <Filename>test.xml</Filename> <FileType>Xml</FileType> </Payload> <message Type="TEST007"> <title>Title1</title> <body></body> </message> </temp:PutData> </note>

回答 2 投票 0

无法读取架构文档'https://jakarta.ee/xml/ns/jakartaee/jakartaee_10.xsd'

这是显示错误: 在此行发现多个注释:- 中有“98”错误 'https://jakarta.ee/xml/ns/jakartaee/web-facesconfig_4_0.xsd'。 - schema_reference.4:无法读取架构

回答 1 投票 0

XSD 到 JAXB 文件和 JAXB 到具有数据库关系的 JPA 实体类

我正在尝试从 xsd 文件创建 JPA 实体类。我使用 xjc 命令将 xsd 文件转换为 JAXB 文件。但我无法将 JAXB 转换为 JPA 实体类。我不能使用 hyperJAXB 因为大多数 ...

回答 1 投票 0

回答 1 投票 0

XML 未针对定义了密钥和 keyref 的 XSD 进行验证

获取 XML 文件以针对 XSD 进行验证时遇到问题。 我正在使用 Visual Studio 2022 编辑和测试 XML 和 XSD。 尝试验证工作负载中的包是

回答 1 投票 0

XML 模式中的否定前瞻

我正在尝试想出一个正则表达式,其中一个字符串, 只能来自[AXYUGHJI], 字符串的最小长度为 0,最大长度为 8, 不区分大小写, 字符串必须具有唯一性

回答 0 投票 0

将枚举值转换为 Apache Axis SimpleType

我编写了一个方法,将普通的 java 枚举值转换为从 xsd 文件中的 SimpleType 生成的类的值。枚举和 SimpleType 在内容上是相同的。不幸...

回答 0 投票 0

xercesc::DOMLSParserImpl::doctypeDecl 从 xercesc 接收到内部和外部实体的错误输入

实际上,它接收内部和外部实体切换的参数。方法签名: virtual void doctypeDecl (const xercesc::DTDElementDecl& root, 常量 XMLCh* 常量 ...

回答 0 投票 0

XML 模式中的 RegEx .xsd

我有一个 xsd 架构文件,它使用的模式基本上是 RegEx,但我在创建正确的 RegEx 时遇到了问题。 我的正则表达式应该接受这些: @{...} with ... 是任何以 ....

回答 1 投票 0

使用XSLT复制XML中的所有节点,同时转换具有特定兄弟值的节点

我有一个 xml 文件,除了 1 个具有我需要转换的特定值的节点外,我主要需要 1 个复制 1 个。我的 XML 如下所示: 我有一个 xml 文件,除了需要转换的具有特定值的 1 个节点外,我主要需要 1 个复制 1 个。我的 XML 看起来像这样: <?xml version='1.0' encoding='UTF-8'?> <xyz:Workers xmlns:xyz="urn:com.website/xyz"> <xyz:Worker> <xyz:Effective_Change xyz:Sequence="0"> <xyz:Person_Identification xyz:isAdded="1"> <xyz:Identifier> <xyz:ID>MJ 12 34 56 Z</xyz:ID> <xyz:IdType>A Type</xyz:IdType> </xyz:Identifier> </xyz:Person_Identification> </xyz:Effective_Change> </xyz:Worker> <xyz:Worker> <xyz:Effective_Change xyz:Sequence="0"> <xyz:Person_Identification xyz:isUpdated="1"> <xyz:Identifier xyz:isUpdated="1"> <xyz:ID>JHQ123</xyz:ID> <xyz:IdType>B Type</xyz:IdType> </xyz:Identifier> <xyz:Identifier xyz:isUpdated="1"> <xyz:ID xyz:priorValue="555-55-5555">123-45-6789</xyz:ID> <xyz:IdType>C Type</xyz:IdType> </xyz:Identifier> </xyz:Person_Identification> </xyz:Effective_Change> </xyz:Worker> </xyz:Workers> 我需要获取加载到节点xyz:ID中的值 <xyz:ID>MJ 12 34 56 Z</xyz:ID> 然后去掉空白,看起来像这样: <xyz:ID>MJ123456Z</xyz:ID> 但只有当他们的兄弟节点是xyz:IdType = A Type <xyz:IdType>A Type</xyz:IdType> 这是我试过的 XSLT。我引用了这个堆栈溢出(Using XSLT to copy all nodes in XML, with support for special cases)但是在处理它之后,我不确定这是否是正确的方法。 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="2.0" xmlns:this="urn:this-stylesheet" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xyz="urn:com.website/xyz" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="xs this"> <!--Identity template, provides default behavior that copies all content into the output --> <xsl:template match="@* | node()"> <xsl:copy> <xsl:apply-templates select="@* | node()"/> </xsl:copy> </xsl:template> <xsl:template match="xyz:ID"> <xsl:copy> <xsl:value-of select="translate(node(), ' ', '')"/> </xsl:copy> </xsl:template> </xsl:stylesheet> 这个 XSLT 给我以下输出: <?xml version="1.0" encoding="UTF-8"?><xyz:Workers xmlns:xyz="urn:com.website/xyz"> <xyz:Worker> <xyz:Effective_Change xyz:Sequence="0"> <xyz:Person_Identification xyz:isAdded="1"> <xyz:Identifier> <xyz:ID>MJ123456Z</xyz:ID> <xyz:IdType>A Type</xyz:IdType> </xyz:Identifier> </xyz:Person_Identification> </xyz:Effective_Change> </xyz:Worker> <xyz:Worker> <xyz:Effective_Change xyz:Sequence="0"> <xyz:Person_Identification xyz:isUpdated="1"> <xyz:Identifier xyz:isUpdated="1"> <xyz:ID>JHQ123</xyz:ID> <xyz:IdType>B Type</xyz:IdType> </xyz:Identifier> <xyz:Identifier xyz:isUpdated="1"> <xyz:ID>123-45-6789</xyz:ID> <xyz:IdType>C Type</xyz:IdType> </xyz:Identifier> </xyz:Person_Identification> </xyz:Effective_Change> </xyz:Worker> </xyz:Workers> 这接近于所需的输出,因为它确实从所需的 ID 中去除了空白: <xyz:ID>MJ123456Z</xyz:ID> 但是,在 C 类型标识符上,它正在删除标签中加载的数据: 改造前: <xyz:ID xyz:priorValue="555-55-5555">123-45-6789</xyz:ID> <xyz:IdType>C Type</xyz:IdType> 改造后: <xyz:ID>123-45-6789</xyz:ID> <xyz:IdType>C Type</xyz:IdType> 这是一个问题,因为我希望文件的其余部分相同,除了 ID 的同级 ID 类型 = A 类型。 我相信这与将自身应用于所有 ID 节点的模板匹配有关。我试着按照这个逻辑做一些事情: <xsl:template match="xyz:Identifier[xyz:IdType='A Type']"> 但是没有运气。任何关于从哪里开始或我应该使用哪种逻辑的线索都将受到高度赞赏。 但只有当他们的兄弟节点是xyz:ID_Type = A Type 为此,您可以在 xyz:Identifier 上使用谓词。请注意,尽管您说的是xyz:ID_Type,但示例中有xyz:IdType. 我也只是匹配text()所以你不必复制或应用模板到xyz:ID的属性。 尝试将您的最后一个模板更改为(如果您的实际数据需要,将 IdType 更改为 ID_Type): <xsl:template match="xyz:Identifier[xyz:IdType='A Type']/xyz:ID/text()"> <xsl:value-of select="translate(., ' ', '')"/> </xsl:template> 小提琴:http://xsltfiddle.liberty-development.net/nbUWwbs 请尝试以下 XSLT。 看来你的 XML 样本应该有而不是: <xyz:IdType>A Type</xyz:IdType> 以下内容: <xyz:ID_Type>A Type</xyz:ID_Type> XSLT <?xml version="1.0"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xyz="urn:com.website/xyz"> <xsl:output method="xml" indent="yes" encoding="utf-8" omit-xml-declaration="no"/> <xsl:strip-space elements="*"/> <!--Identity Transform pattern--> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="xyz:ID[following-sibling::xyz:ID_Type='A Type']"> <xsl:copy> <xsl:value-of select="translate(., ' ', '')"/> </xsl:copy> </xsl:template> </xsl:stylesheet> 输出 <?xml version='1.0' encoding='utf-8' ?> <xyz:Workers xmlns:xyz="urn:com.website/xyz"> <xyz:Worker> <xyz:Effective_Change xyz:Sequence="0"> <xyz:Person_Identification xyz:isAdded="1"> <xyz:Identifier> <xyz:ID>MJ123456Z</xyz:ID> <xyz:ID_Type>A Type</xyz:ID_Type> </xyz:Identifier> </xyz:Person_Identification> </xyz:Effective_Change> </xyz:Worker> <xyz:Worker> <xyz:Effective_Change xyz:Sequence="0"> <xyz:Person_Identification xyz:isUpdated="1"> <xyz:Identifier xyz:isUpdated="1"> <xyz:ID>JHQ123</xyz:ID> <xyz:ID_Type>B Type</xyz:ID_Type> </xyz:Identifier> <xyz:Identifier xyz:isUpdated="1"> <xyz:ID xyz:priorValue="555-55-5555">123-45-6789</xyz:ID> <xyz:ID_Type>C Type</xyz:ID_Type> </xyz:Identifier> </xyz:Person_Identification> </xyz:Effective_Change> </xyz:Worker> </xyz:Workers>

回答 2 投票 0

从 jaxb xjc 代迁移到 jakarta 和 Java 17

我们正在调查我们的应用程序从 JDK8 到 JDK17 的迁移。我们的一些模块使用基于 wsdl 的 Web 服务,其他一些使用 .xsd 模式等。无论如何,我们...

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.