需要为以下xml生成XSD架构吗?

需要为以下xml生成XSD架构吗?,xsd,Xsd,我想为下面的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

我想为下面的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>

乌布斯
2015021
10
1296238
2023-06-31
1.
EMP2015021
8.
跟随
乌布斯
2015021
10
1296238
2023-06-31
1.
EMP2015021
8.
跟随

有人能帮我找到一个正确的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>


这一点已经得到了回答。可能需要手动添加名称空间要求。

通常,无法自动生成架构,因为您无法猜测可选元素。但作为起点,您可以尝试以下转换:

<?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>


这一点已经得到了回答。可能需要手动添加名称空间要求。

您的目标是自动生成还是简单地为XML创建XSD?另外,您的
schemaLocation
表明XSD已经存在。您是否为
http://www.empsts.com/schema/empsts
命名空间位于
。/idec/empsts.xsd
?您的目标是自动生成还是简单地为XML创建xsd?另外,您的
schemaLocation
表明XSD已经存在。您是否为
http://www.empsts.com/schema/empsts
命名空间位于
。/idec/empsts.xsd
?如何使用上述xsl运行xml?任何工具。还需要名称空间方面的帮助,因为名称空间容易混淆并引发URI异常。如何使用上述xsl运行xml?任何工具。还需要有关名称空间的帮助,因为名称空间容易混淆并引发URI异常