需要为以下 xml 生成 XSD 架构?
Need a generate XSD schema for the following xml?
我想为以下 xml 生成一个合适的 XSD。我尝试过在线转换,但每个网站都提供不同的输出。你能帮我一个正确的 XSD 吗?
<empsts:empTest xmlns:empsts="http://www.empsts.com/schema/empsts"
xmlns:cm="http://www.empsts.com/schema/common"
xmlns:deccm="http://www.empsts.com/schema/deccm"
xmlns:mis="http://www.empsts.com/schema/miscellaneous"
xmlns:emp="http://www.empsts.com/schema/emp"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.empsts.com/schema/empsts ../idec/empsts.xsd"
empsts:docType="DEC" empsts:id="01020150609000133" empsts:msgType="EMPSTS">
<empsts:record>
<emp:payment xsi:type="empsts:empStatusType">
<empsts:reference>
<empsts:acctId>ubce</empsts:acctId>
<empsts:docRefNo>2015021</empsts:docRefNo>
<empsts:regType cm:type="1">10</empsts:regType>
<empsts:empSSN>1296238</empsts:empSSN>
</empsts:reference>
<empsts:statusInfo>
<empsts:statusDate>2023-06-31</empsts:statusDate>
<empsts:statusCode>1</empsts:statusCode>
<empsts:originalMsgId>EMP2015021</empsts:originalMsgId>
</empsts:statusInfo>
<empsts:statusErrorDetails>
<empsts:statusErrorCodeDetails>8</empsts:statusErrorCodeDetails>
<empsts:remarks>Follow</empsts:remarks>
</empsts:statusErrorDetails>
</emp:payment>
</empsts:record>
<empsts:record>
<emp:payment xsi:type="empsts:empStatusType">
<empsts:reference>
<empsts:acctId>ubce</empsts:acctId>
<empsts:docRefNo>2015021</empsts:docRefNo>
<empsts:regType cm:type="1">10</empsts:regType>
<empsts:empSSN>1296238</empsts:empSSN>
</empsts:reference>
<empsts:statusInfo>
<empsts:statusDate>2023-06-31</empsts:statusDate>
<empsts:statusCode>1</empsts:statusCode>
<empsts:originalMsgId>EMP2015021</empsts:originalMsgId>
</empsts:statusInfo>
<empsts:statusErrorDetails>
<empsts:statusErrorCodeDetails>8</empsts:statusErrorCodeDetails>
<empsts:remarks>Follow</empsts:remarks>
</empsts:statusErrorDetails>
</emp:payment>
</empsts:record>
</empsts:empTest>
有人可以帮我提供正确的 XSD 架构文件吗?
通常无法自动生成架构,因为您无法猜测可选元素。但作为起点,您可以尝试这种转换:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xsl:for-each select="//*[not(descendant::element())]">
<xsl:element name="xs:element">
<xsl:attribute name="name">
<xsl:value-of select="name()"/>
</xsl:attribute>
<xs:simpleType>
<xs:restriction base="xs:string"/>
</xs:simpleType>
</xsl:element>
</xsl:for-each>
<xsl:for-each select="//*[descendant::element()]">
<xsl:element name="xs:element">
<xsl:attribute name="name">
<xsl:value-of select="name()"/>
</xsl:attribute>
<xs:complexType>
<xs:sequence>
<xsl:for-each select="child::*">
<xsl:element name="xs:element">
<xsl:attribute name="ref">
<xsl:value-of select="name()"/>
</xsl:attribute>
</xsl:element>
</xsl:for-each>
</xs:sequence>
</xs:complexType>
</xsl:element>
</xsl:for-each>
</xs:schema>
</xsl:template>
</xsl:stylesheet>
这已经得到回答 here。可能需要手动添加名称 space 要求。
我想为以下 xml 生成一个合适的 XSD。我尝试过在线转换,但每个网站都提供不同的输出。你能帮我一个正确的 XSD 吗?
<empsts:empTest xmlns:empsts="http://www.empsts.com/schema/empsts"
xmlns:cm="http://www.empsts.com/schema/common"
xmlns:deccm="http://www.empsts.com/schema/deccm"
xmlns:mis="http://www.empsts.com/schema/miscellaneous"
xmlns:emp="http://www.empsts.com/schema/emp"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.empsts.com/schema/empsts ../idec/empsts.xsd"
empsts:docType="DEC" empsts:id="01020150609000133" empsts:msgType="EMPSTS">
<empsts:record>
<emp:payment xsi:type="empsts:empStatusType">
<empsts:reference>
<empsts:acctId>ubce</empsts:acctId>
<empsts:docRefNo>2015021</empsts:docRefNo>
<empsts:regType cm:type="1">10</empsts:regType>
<empsts:empSSN>1296238</empsts:empSSN>
</empsts:reference>
<empsts:statusInfo>
<empsts:statusDate>2023-06-31</empsts:statusDate>
<empsts:statusCode>1</empsts:statusCode>
<empsts:originalMsgId>EMP2015021</empsts:originalMsgId>
</empsts:statusInfo>
<empsts:statusErrorDetails>
<empsts:statusErrorCodeDetails>8</empsts:statusErrorCodeDetails>
<empsts:remarks>Follow</empsts:remarks>
</empsts:statusErrorDetails>
</emp:payment>
</empsts:record>
<empsts:record>
<emp:payment xsi:type="empsts:empStatusType">
<empsts:reference>
<empsts:acctId>ubce</empsts:acctId>
<empsts:docRefNo>2015021</empsts:docRefNo>
<empsts:regType cm:type="1">10</empsts:regType>
<empsts:empSSN>1296238</empsts:empSSN>
</empsts:reference>
<empsts:statusInfo>
<empsts:statusDate>2023-06-31</empsts:statusDate>
<empsts:statusCode>1</empsts:statusCode>
<empsts:originalMsgId>EMP2015021</empsts:originalMsgId>
</empsts:statusInfo>
<empsts:statusErrorDetails>
<empsts:statusErrorCodeDetails>8</empsts:statusErrorCodeDetails>
<empsts:remarks>Follow</empsts:remarks>
</empsts:statusErrorDetails>
</emp:payment>
</empsts:record>
</empsts:empTest>
有人可以帮我提供正确的 XSD 架构文件吗?
通常无法自动生成架构,因为您无法猜测可选元素。但作为起点,您可以尝试这种转换:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xsl:for-each select="//*[not(descendant::element())]">
<xsl:element name="xs:element">
<xsl:attribute name="name">
<xsl:value-of select="name()"/>
</xsl:attribute>
<xs:simpleType>
<xs:restriction base="xs:string"/>
</xs:simpleType>
</xsl:element>
</xsl:for-each>
<xsl:for-each select="//*[descendant::element()]">
<xsl:element name="xs:element">
<xsl:attribute name="name">
<xsl:value-of select="name()"/>
</xsl:attribute>
<xs:complexType>
<xs:sequence>
<xsl:for-each select="child::*">
<xsl:element name="xs:element">
<xsl:attribute name="ref">
<xsl:value-of select="name()"/>
</xsl:attribute>
</xsl:element>
</xsl:for-each>
</xs:sequence>
</xs:complexType>
</xsl:element>
</xsl:for-each>
</xs:schema>
</xsl:template>
</xsl:stylesheet>
这已经得到回答 here。可能需要手动添加名称 space 要求。