XSD通常是指以W3C XML Schema格式编写的文档,其中包含特定类型的XML文档的描述。
我有一个 xsd 架构文件,它使用的模式基本上是 RegEx,但我在创建正确的 RegEx 时遇到了问题。 我的正则表达式应该接受这些: @{...} with ... 是任何以 ....
使用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>
从 jaxb xjc 代迁移到 jakarta 和 Java 17
我们正在调查我们的应用程序从 JDK8 到 JDK17 的迁移。我们的一些模块使用基于 wsdl 的 Web 服务,其他一些使用 .xsd 模式等。无论如何,我们...
为什么 xmlns 属性不适用于 Visual Studio 的 XML 编辑器中的子元素?
如您所见,除了“非工作”和“工作”版本之外,唯一的区别(左)是到处都使用“this”前缀。 难道不是默认的重点
这是我第二次问这个问题: 在 XML 文档(使用版本 1.1)中,元素 random 有两个整数: 一个整数开始,通常只应具有从 min=1 a...
资源描述框架 (RDF) 允许指定分布式资源系统。例如,我可以使用三元组 <
我在哪里可以找到 SQL 的 xsd 或 dtd 规范?我试过 bnf ready files to transform 但没有成功。
如何在 2023 年使用 spring boot 3.x.x 从 xsd/wsdl 生成 Java
有几个项目1: org.codehaus.mojo jaxb2-maven-插件 2: org.apache.cxf...
我正在与第三方供应商合作,在那里我们将收到 xml 文档,模式定义将是一个 URL。我有以下要解析的 XSD。 XSD: 我正在与第三方供应商合作,在那里我们将收到 xml 文档,模式定义将是一个 URL。我有下面的 XSD,我正在尝试解析。 XSD: <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Employee"> <xs:complexType> <xs:sequence> <xs:element name="Name"> <xs:complexType> <xs:sequence> <xs:element name="First" type="xs:string"/> <xs:element name="Middle" type="xs:string"/> <xs:element name="Last" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> 查询: DECLARE @xml XML = '<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Employee"> <xs:complexType> <xs:sequence> <xs:element name="Name"> <xs:complexType> <xs:sequence> <xs:element name="First" type="xs:string"/> <xs:element name="Middle" type="xs:string"/> <xs:element name="Last" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>' SELECT N.node.value('@name[1]', 'nvarchar(max)') AS column_name FROM @xml.nodes('//xs:element') N(node) 输出: | Table_Name | Column_Name | |---------------------|------------------| | Employee | First | | Employee | Middle | | Employee | Last | 如何从 URL (http://myweb.com/data/emp?xsd) 解析 XSD 到上面的输出?
XSD - 如何允许元素以任何顺序排列,而一些元素出现次数为 0-1 而另一些元素出现次数为 0-unbounded
我必须根据 xsd 语法验证 xml 文件。以下是对我的原始要求的简单模拟。 有一个名为 的根元素 它有四个子元素,让我们定义...
我需要更改生成的 xmlns 空字符串值。 我需要更改生成的 xmlns 空字符串值。 <SOAP-ENV:Body> <AirShoppingRQ xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="17.2" > 预期: <SOAP-ENV:Body> <AirShoppingRQ xmlns="http://www.iata.org/IATA/EDIST/2017.2" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="17.2" > 尝试将 packag-info.java 编辑为 @javax.xml.bind.annotation.XmlSchema( xmlns = { @javax.xml.bind.annotation.XmlNs(prefix = "xsd", namespaceURI = "http://www.w3.org/2001/XMLSchema"), @javax.xml.bind.annotation.XmlNs(prefix = "xsi", namespaceURI = "http://www.w3.org/2001/XMLSchema-instance") } ) 下面是根元素: @XmlRootElement(name = "AirShoppingRQ") public class AirShoppingRQ { } 尽管我尝试将其作为属性删除,但无法再次添加它。 SOAPElement x = (SOAPElement) body.getChildElements().next(); x.removeAttribute("xmlns"); 请注意:xmlns 不应有任何“ns2”或“ns3”前缀,因为服务器不接受它。 有人可以帮忙吗? 我会试试 @XmlRootElement(name = "AirShoppingRQ", namespace = "http://www.iata.org/IATA/EDIST/2017.2") public class AirShoppingRQ { } 或者如果您有一个将该命名空间作为 targetNamespace 的架构,我认为您可以使用例如 @XmlRootElement(name = "AirShoppingRQ", namespace = "##default") public class AirShoppingRQ { } 您在问题中提到您尝试通过编辑package-info.java 来提供名称空间前缀映射,但实际上您没有提供IATA 相关名称空间的映射。您是否尝试过以下方法? @javax.xml.bind.annotation.XmlSchema( xmlns = { @javax.xml.bind.annotation.XmlNs( prefix = "xsd", namespaceURI = "http://www.w3.org/2001/XMLSchema" ), @javax.xml.bind.annotation.XmlNs( prefix = "xsi", namespaceURI = "http://www.w3.org/2001/XMLSchema-instance" ), @javax.xml.bind.annotation.XmlNs( prefix = "iata", namespaceURI = "http://www.iata.org/IATA/EDIST/2017.2" ) } ) 要将“xmlns”属性的值设置为特定命名空间 URI,您可以将以下注释添加到您的 AirShoppingRQ 类: @XmlRootElement(name = "AirShoppingRQ", namespace = "http://www.iata.org/IATA/EDIST/2017.2") public class AirShoppingRQ { //... } 这会将 AirShoppingRQ 的名称空间 URI 设置为“http://www.iata.org/IATA/EDIST/2017.2”,并且应该生成所需的 XML。 您还应该从 package-info.java 文件中删除 @XmlSchema 注释,因为这对于设置单个元素的名称空间 URI 不是必需的。 但是如果服务器不接受前缀为“ns2”或“ns3”的命名空间,那么您应该确保您用于 AirShoppingRQ 元素的命名空间 URI 没有前缀。 @XmlSchema( namespace = "http://www.iata.org/IATA/EDIST/2017.2", elementFormDefault = XmlNsForm.QUALIFIED, xmlns = { @XmlNs(namespaceURI = "http://www.iata.org/IATA/EDIST/2017.2", prefix = "") } ) package com.example; import javax.xml.bind.annotation.XmlNs; import javax.xml.bind.annotation.XmlNsForm; import javax.xml.bind.annotation.XmlSchema;
有人能解决这个问题吗?我们集成了一个接收位置 (WCF-BasicHttp)。由于某些业务需求,该 rcv-location 必须能够处理四个
如何从 Soap 消息请求中获取 Integer 类的空对象?
肥皂对我来说是一项新技术。我收到一个 Soap 消息请求,这是其中的一部分 ...
假设我有一个类型层次结构,这样 RetentionContest 是一个 BallotMeasureContest 是一个竞赛(在我的 XSD 中)。然后我有几个 XSLT 模板,例如 假设我有一个类型层次结构,这样 RetentionContest is-a BallotMeasureContest is-a Contest (在我的 XSD 中)。然后我有几个 XSLT 模板,例如 <xsl:template name="cdf:BallotMeasureContest" match="element(*, cdf:BallotMeasureContest)"> 和 <xsl:template name="cdf:RetentionContest" match="element(*, cdf:RetentionContest)"> 假设我有 @xsi:type = "cdf:RentionContest" 的输入并且我正在使用模式感知处理器,哪个模板被调用?如何确保调用最具体子类型的模板? (注意:我尝试了优先级但没有成功)。 Altova 和 Saxon-EE 似乎只是调用最后一个适用的。 repro_delete.xml <?xml version="1.0" encoding="UTF-8"?> <n1:ElectionReport xmlns:n1="http://itl.nist.gov/ns/voting/1500-100/v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://itl.nist.gov/ns/voting/1500-100/v2 repro_delete.xsd"> <n1:Election> <n1:Contest xsi:type="n1:RetentionContest" ObjectId="rc-123"> <n1:CandidateId>rc-123</n1:CandidateId> </n1:Contest> </n1:Election> </n1:ElectionReport> repro_delete.xsl <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns="http://www.w3.org/2005/xpath-functions" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cdf="http://itl.nist.gov/ns/voting/1500-100/v2" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:math="http://www.w3.org/2005/xpath-functions/math" xmlns:array="http://www.w3.org/2005/xpath-functions/array" xmlns:map="http://www.w3.org/2005/xpath-functions/map" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:err="http://www.w3.org/2005/xqt-errors" exclude-result-prefixes="array cdf fn map math xhtml err xs xsi" version="3.0"> <xsl:output method="text" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:import-schema namespace="http://itl.nist.gov/ns/voting/1500-100/v2" schema-location="repro_delete.xsd"/> <xsl:template match="/" name="xsl:initial-template"> <xsl:apply-templates/> </xsl:template> <xsl:template name="cdf:C" match="element(*, cdf:Contest)"> Contest </xsl:template> <xsl:template name="cdf:RC" match="element(*, cdf:RetentionContest)"> Retention </xsl:template> <xsl:template name="cdf:BMC" match="element(*, cdf:BallotMeasureContest)"> Ballot Measure Contest </xsl:template> </xsl:stylesheet> repro_delete.xsd <?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns="http://itl.nist.gov/ns/voting/1500-100/v2" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://itl.nist.gov/ns/voting/1500-100/v2" elementFormDefault="qualified" version="2.0.3"> <xsd:element name="ElectionReport" type="ElectionReport"/> <xsd:complexType name="BallotMeasureContest"> <xsd:complexContent> <xsd:extension base="Contest"> <xsd:sequence> <xsd:element name="FullText" type="InternationalizedText" minOccurs="0" > </xsd:element> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="Contest" abstract="true"> <xsd:sequence> <xsd:element name="SubUnitsReported" type="xsd:integer" minOccurs="0"> </xsd:element> <xsd:element name="TotalSubUnits" type="xsd:integer" minOccurs="0"> </xsd:element> </xsd:sequence> <xsd:attribute name="ObjectId" type="xsd:ID" use="required"/> </xsd:complexType> <xsd:complexType name="Election"> <xsd:sequence> <xsd:element name="Contest" type="Contest" minOccurs="0" maxOccurs="unbounded" > </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="ElectionReport"> <xsd:sequence> <xsd:element name="Election" type="Election" minOccurs="0" maxOccurs="unbounded" > </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="InternationalizedText"> <xsd:sequence> <xsd:element name="Text" type="xsd:string" maxOccurs="unbounded"> </xsd:element> </xsd:sequence> <xsd:attribute name="Label" type="xsd:string"> </xsd:attribute> </xsd:complexType> <xsd:complexType name="RetentionContest"> <xsd:complexContent> <xsd:extension base="BallotMeasureContest"> <xsd:sequence> <xsd:element name="CandidateId" type="xsd:IDREF"> </xsd:element> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:schema>
我有 XML,其中某些元素必须出现 0 次或 1 次,其他元素可以出现 0..多次。例子: Person 元素可以有 'firstName'(0..1)、'lastName'(0..1)、Pet(0..m)、Address(0..m) 或...
dataSet.GetXml() 不会为空列或空白列返回 xml
当我调用 dataSet.GetXml() 时,我没有为具有空值或空值的列返回任何 xml。有没有一种简单有效的方法来解决这个问题?以下问题的示例。注意 a2 是怎样的
比较 2 个 XSD 文件并将文件 2 中缺少的元素添加到文件 1
我的要求是比较具有嵌套结构的 2 个 XSD 文件(file1.xsd 和 file2.xsd)。我需要将 file2 中缺少的元素添加到 file1(假设 file1 是基础元素和附加元素...
XmlSchemaInference.InferSchema 为 UInt32 属性 (.Net) 推断 type="xsd:unsignedByte"
我正在从 C# 类创建 XSD 文档。 此类具有类型为 UInt32 的属性,我希望根据本文将其映射到 xs:unsignedInt: 将 XML 数据类型映射到 CLR 类型 代码 ...
我收到了 4 个 XSD 模式文件(一个是根,一个用于标题/尾部,一个用于基础,一个用于元素类型) 将根传递给 xsd.exe,成功生成具有适当