XSD通常是指以W3C XML Schema格式编写的文档,其中包含特定类型的XML文档的描述。
根据 XML 文件的架构验证我的 XML 文件时收到此错误消息。谁能建议可能出了什么问题? XML 文件是: 根据 XML 文件的架构验证我的 XML 文件时收到此错误消息。谁能建议可能出了什么问题? XML 文件是: <?xml version="1.0"?> <family-tree xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ftree.xsd"> <person id="p5"> <name> <given>Al Frank</given> <surname>Smith</surname> </name> </person> <person id="p6"> <name> <given>Henry</given> <surname>Smith</surname> </name> <father ref="p5"/> </person> </family-tree> 架构是: <?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:element name="family-tree"> <xsd:complexType> <xsd:sequence> <xsd:element name="person" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="person"> <xsd:complexType> <xsd:sequence> <xsd:element name="name" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="father" minOccurs="0"/> </xsd:sequence> <xsd:attribute name="id" use="required" type="xsd:ID"/> </xsd:complexType> </xsd:element> <xsd:element name="name"> <xsd:complexType> <xsd:sequence> <xsd:element minOccurs="0" name="given"/> <xsd:element minOccurs="0" name="surname"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="given" type="xsd:string"/> <xsd:element name="surname" type="xsd:string"/> <xsd:element name="father"> <xsd:complexType> <xsd:attribute name="ref" use="required" type="xsd:IDREF"/> </xsd:complexType> </xsd:element> </xsd:schema> 您使用哪个 XML 解析器?也许您的解析器不喜欢您的 id 未在文档中的任何位置引用这一事实。但是,我不记得读过这样的要求。也许在 XML 声明中添加standalone="no" () 会有所帮助?
我正在尝试根据以下架构对生成的属性进行简单的重命名: 我正在尝试从以下架构中对生成的属性进行简单的重命名: <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://usermanagement" targetNamespace="http://usermanagement"> <!-- definitions of complexTypes RoleRef and OrganizationRef omitted --> <xs:element name="User"> <xs:complexType> <xs:complexContent> <xs:extension base="core:RawDTO"> <xs:sequence> <xs:element name="FirstName" type="xs:string"/> <xs:element name="LastName" type="xs:string" minOccurs="0"/> <xs:element name="UserId" type="xs:string" minOccurs="0"/> <xs:element name="Password" type="xs:string" minOccurs="0"/> <xs:element name="Active" type="xs:boolean" minOccurs="0"/> <xs:element name="Role" minOccurs="0" maxOccurs="unbounded" type="tns:RoleRef"/> <xs:element name="Organization" minOccurs="0" maxOccurs="unbounded" type="tns:OrganizationRef"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> </xs:schema> 使用此绑定: <bindings xmlns="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="2.1"> <bindings xmlns:tns="http://usermanagement" scd="x-schema::tns"> <!-- Testing simple element match: <bindings scd="tns:User"> <class name="Uzer"/> </bindings> --> <!-- other attempts: tns:User/type::0/model::sequence/tns:Role tns:User/type::0/tns:Role --> <bindings scd="tns:User/type::0/content::0/extension::0/model::sequence/tns:Role"> <property name="roles"/> </bindings> <schemaBindings> <package name="com.test.users"/> </schemaBindings> </bindings> </bindings> 问题是我无法让该表达式匹配,而且我发现的 SCD 示例非常少,并且与这种类型的结构与 element / complexType / complexContent / extension /equence 不匹配。 我尝试用作灵感的指南只有元素/复杂类型/序列:/schemaElement::my:chapter/type::0 据我所知,JAXB 使用的 XSOM 编译器不喜欢指南中的所有表达式类型,例如 /type::my:articleType/model::sequence/schemaElement::my:appendix 关于如何使用 SCD 进行匹配有任何线索吗? 谢谢你 我遇到了类似的问题,并且我也一直在阅读 W3 组件指示符规范。 由于 JAX2 Maven 插件中缺乏文档且详细输出有点损坏,我被迫使用格式不正确的 SCD 来运行它,以从插件/XJC 获取“帮助”: 匹配以下模式: 我能够使用以下 SCD 来匹配“类型”属性的枚举: /type::tns:CategoryType/attribute::Type/type::* 绑定配置如下所示: 希望有帮助。
这是我的示例 XML 代码: 我在用: 这是我的示例 XML 代码: <bestContact> <firstName><![CDATA[12345]]></firstName> <lastName /> </bestContact> 我正在使用: <xs:element name="lastName" type="xs:string" minOccurs="1" nillable="false"/> XSD 应验证 lastName 不为 null 或空。 尝试 <xs:element name="lastName" minOccurs="1" nillable="false"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:minLength value="1"/> </xs:restriction> </xs:simpleType> </xs:element> <xsd:element name="lastName" type="NonEmptyString" nillable="false"/> <xsd:simpleType name="NonEmptyString"> <xsd:restriction base="xs:string"> <xsd:minLength value="1" /> <xsd:pattern value=".*[^\s].*" /> </xsd:restriction> </xsd:simpleType> 恕我直言,这是一个更好的模式: <xs:simpleType name="NonEmptyString"> <xs:restriction base="xs:string"> <xs:pattern value="^(?!\s*$).+" /> </xs:restriction> </xs:simpleType> 或 <xs:simpleType name="NonEmptyStringWithoutSpace"> <xs:restriction base="xs:string"> <xs:pattern value="\S+"/> </xs:restriction> </xs:simpleType> @Kamal 在这里给了你基本上正确的答案。这就是为什么 - nillable 似乎总是会引起问题。实际上,您可以将 nillable 视为含义 允许此元素上的 xsi:nil 属性。 XML Schema 规范 将 nillable 描述为带外信号 - 它基本上用于向数据库指示 NULL。 您想要的是一个元素,其长度必须至少为一个字符,如 @Kamal 给出的 这是我最喜欢的解决方案。 <xs:simpleType name="NonEmptyString"> <xs:restriction base="xs:string"> <xs:pattern value="[\s\S]*[^ ][\s\S]*"/> </xs:restriction> </xs:simpleType> 我的解决方案是使用 xs:token 因此忽略前导和尾随空格,并使用一个简单的正则表达式来验证是否存在至少一个非空白字符: <xs:simpleType name="NonEmptyElementType"> <xs:restriction base="xs:token"> <xs:minLength value="1"/> <xs:pattern value=".*\S.*"/> </xs:restriction> </xs:simpleType> <xs:minLength value="1"/>不是必需的,但我喜欢它对于未来维护者的可读性。
我需要将不使用任何模式的 XML 文档转换为使用定义良好的模式的另一种格式。 所以基本上我必须改变这个: 我需要将不使用任何模式的 XML 文档转换为使用定义良好的模式的另一种格式。 所以基本上我必须改变这个: <healthCareFacilityTypeCode displayName="Home" codingScheme="Connect-a-thon healthcareFacilityTypeCodes" >Home</healthCareFacilityTypeCode> 进入此: <healthCareFacilityTypeCode> <code>Home</code> <displayName> <LocalizedString value="Home" /> </displayName> <schemeName>Connect-a-thon healthcareFacilityTypeCodes</schemeName> </healthCareFacilityTypeCode> 我知道如何通过查看架构来手动转换它。这是 XSD 的片段: <xsd:complexType name="DocumentEntryType"> <xsd:sequence> <xsd:element minOccurs="0" name="healthCareFacilityTypeCode" type="tns:CodedMetadataType"/> </xsd:sequence> <xsd:attribute default="false" name="existing" type="xsd:boolean" use="optional"/> </xsd:complexType> <xsd:element name="DocumentEntry" type="tns:DocumentEntryType"/> 我不知道如何解决的是:如何利用目标 XSD 将节点从源 XML 转换为目标 XML 文档。我觉得执行转换的所有信息都位于 XSD 中,但我可以使用它吗?怎么办? 遵循建议,这就是我想到的。不完美,但足以满足我的目的。 <xsl:template match="XDSDocumentEntry"> <DocumentEntryType> <xsl:call-template name="namespaceChange"/> <xsl:apply-templates/> </DocumentEntryType> </xsl:template> <xsl:template match="node() | @*"> <xsl:copy> <xsl:apply-templates select="node() | @*"/> </xsl:copy> </xsl:template> <xsl:template match="//*[matches(name(), 'Code')]"> <xsl:copy> <code> <xsl:value-of select="."/> </code> <schemeName> <xsl:value-of select="@codingScheme"/> </schemeName> <displayName> <LocalizedString> <xsl:attribute name="value"> <xsl:value-of select="@displayName"/> </xsl:attribute> </LocalizedString> </displayName> </xsl:copy> </xsl:template>
对于这个问题我有些不知所措。 我正在编写一小段代码,用于根据相应的 XSD 架构验证 XML 文件。 为了测试,我向它传递了一个有效的 XML 文件(有效...
是否可以在没有适配器的情况下绑定到字符串? 我有一个第三方架构,其属性类型(日期)错误,并且在外部文件绑定中我将其转换为字符串,因此
我尝试使用 JAXB 从 spring-beans.xsd 生成 Java 类(仅用于训练目的),但出现此错误: 正在解析架构... [错误] 属性“Ref”已定义。使用<...
您可以根据 XML 文档验证 XPath 表达式来验证它,但是有没有一种简单的方法可以根据该文档的架构验证相同的 XPath 表达式? 假设我有一个 XSD 架构,例如...
我有一个逻辑应用工作流程,使用 XML 文件的平面文件编码步骤。 我已将 XSD 文件上传到逻辑应用程序的工件/架构位置。 当我运行工作流程时,我看到以下内容...
Visual studio 2022 对 .xsd 设计器执行搜索
我有一个大项目,其中有一个 .xsd 文件,其中包含数据库所有表的数据集。 我使用与 Visual Studio 集成的 .xsd 设计器向表适配器和其他项目添加查询...
只是为了防止有一天有人产生同样的错误。 在 NLog.config 文件的起始部分,Visual Studio 告诉我(带有警告)它找不到 NLog.xsd 文件 <...
创建 XML 时,属性 wait 可能并不总是包含值。如何编辑架构以便允许属性等待包含数字或不包含值? 创建 XML 时,属性 wait 可能并不总是包含值。如何编辑架构以便允许属性 wait 包含数字或不包含值? <xs:complexType name="CommandType"> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute type="xs:string" name="exe" use="required" /> <xs:attribute type="xs:string" name="args" use="required" /> <xs:attribute type="xs:int" name="wait" use="required" /> <xs:attribute type="xs:string" name="expectedOutput" use="required" /> <xs:attribute type="xs:string" name="toVariable" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> 我尝试过做这两个nillable="true"xsi:nil="true",但它们不起作用。当我尝试验证 XSD 时,出现错误。 “nillable”仅适用于元素,不适用于属性 - 即使这样它也不是很有用,因为如果元素为空,您必须添加 xsi:nil="true",这是完全多余的。 (a) 定义一个类型,它是 xs:integer 和一个零长度字符串的联合,如 IMSoP 所建议的,或者 (b) 定义一个项目类型为整数、minLength 0、maxLength 1 的列表类型。我更喜欢后者解决方案,因为它与模式感知 XSLT 和 XQuery 配合得更好。 例如: <xs:simpleType name="list-of-int"> <xs:list itemType="xs:integer"/> </xs:simpleType> <xs:simpleType name="optionalInt"> <xs:restriction base="list-of-int"> <xs:minLength value="0"/> <xs:maxLength value="1"/> </xs:restriction> </xs:simpleType> 可能有更简单的方法,但也许您可以创建一个自定义类型,该类型可以是空字符串,也可以使用 xs:int 类型符合 union 的定义: <xs:simpleType name="emptyString"> <xs:restriction base="xs:string"> <xs:length value="0" /> </xs:restriction> </xs:simpleType> <xs:simpleType name="intOrEmpty"> <xs:union memberTypes="xs:int emptyString" /> </xs:simpleType> 顺便说一句,值得记住的是 xs:string 类型包含空字符串,因此,如果 exe 属性应始终具有非空值,则需要 nonEmptyString 类型(使用 minLength 限制)以及将其标记为 required。我知道这让我过去很困惑。
Autosar DEXT ARXML 文件中的元素以及创建 DEXT 后的“检查规则”是什么?
我正在尝试为 git 中的开源 python 代码做出贡献,该代码从一组输入(doc、xls)创建 DEXT ARXML 文件。我想知道/获取应该包含在其中的元素列表以及所有
将两个具有不重叠定义的命名空间 2 的 XSD 导入命名空间 1 的 XSD 中
我提到了“从不同的 xsd 导入相同的命名空间”的问题,区别在于我的两个导入的 XSD 中的定义不重叠。 我需要导入两个 XSD(kd1.xsd 和 kd2.xsd)...
XSLT 错误:提供给 xsl:evaluate 的 XPath 表达式中出现静态错误:XPath 表达式中未声明变量
我尝试使用特定标签中的值作为变量名。但是,在转换 xml 时,系统会在 XPath 表达式中给出未声明的变量异常。 我的 Xml 文件是 我尝试使用特定标签中的值作为变量名。但是在转换 xml 时系统给出了 XPath 表达式中未声明的变量异常。 我的 Xml 文件是 <request> <entityType>individual</entityType> </request> Xslt 文件是 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:math="http://www.w3.org/2005/xpath-functions/math" exclude-result-prefixes="xs math" version="3.0"> <xsl:param name="individual" static="yes" as="xs:string" select="'1'"/> <xsl:param name="legal" static="yes" as="xs:string" select="'2'"/> <xsl:template match="/*"> <xsl:param name="entity" as="xs:string" select="concat('$',entityType)"/> <xsl:variable name="input" as="xs:string"> <xsl:evaluate xpath="$entity"/> </xsl:variable> <HTML><TITLE><xsl:value-of select="$input"/></TITLE></HTML> </xsl:template> </xsl:stylesheet> 我期望结果为 <HTML><TITLE>1</TITLE></HTML> 但是我收到“提供给 xsl:evaluate 的 XPath 表达式中出现静态错误:XPath 表达式中未声明的变量”消息。 如果您阅读https://www.w3.org/TR/xslt-30/#dynamic-xpath,那么您会发现它清楚地指出“在xsl:variable或xsl:param元素中的样式表中声明的变量不是在目标表达式的范围内。”。您必须在 xsl:with-param 内使用 xsl:evaluate 和/或 with-params 上的 xsl:evaluate 来声明所需的参数。 <xsl:evaluate xpath="$entity" with-params="map{ QName('', 'individual') : $individual }"/>
我正在尝试编写一个 XSD 来验证 XML,其中以下内容必须为真: 一个元素(父元素)包括: “Choice1”或“Choice2”元素 加上“Field1”、“Field2”、“F...