xsd替换或xlt转换

时间:2015-11-09 04:02:35

标签: html asp.net xml asp.net-mvc-3 xsd

如何使用替换更改此XSD以获得以下结果?

我有一个从我的asp.net API从Saas提供者返回的XML。该服务来自asp.net mvc但是,我只能使用asp经典,而且我的能力非常有限。我可以将TSQL查询发送到SQL Server 2005 ......除此之外,没有太多可以做的事情。因此,我唯一需要的选择(我最好的当前选项)就是这个。数据从我的asp经典页面service.asp返回。 service.asp返回基于XSD文件的结构化xml,该文件与我的脚本位于同一文件夹中以获取数据。我将向您展示它当前返回的内容,当前xsd是什么,它应该返回什么,以及我尝试对XSD进行的修改。希望这是有人需要帮助我的信息,因为这不是我强大的套房。谢谢!

当前XML响应

目前数据返回如下:

<xmldata>
    <group>
        <groupid>1</groupid>
        <parentid>2</parentid>
        <item>133</item>
        <ProductCode>blahblah</ProductCode>
        <ProductName>blahblah</ProductName>
    </group>
    <group>
        <groupid>2</groupid>
        <parentid>2</parentid>
        <item>134</item>
        <ProductCode>blahblah</ProductCode>
        <ProductName>blahblah</ProductName>
    </group>
    <group>
        <groupid>2</groupid>
        <parentid>2</parentid>
        <item>313</item>
        <ProductCode>blahblah</ProductCode>
        <ProductName>blahblah</ProductName>
    </group>
    <group>
        <groupid>3</groupid>
        <parentid>2</parentid>
        <item>46</item>
        <ProductCode>blahblah</ProductCode>
        <ProductName>blahblah</ProductName>
    </group>
</xmldata>

当前XSD文件

我当前的XSD文件结构如下:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="xmldata" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
xmlns:msprop="urn:schemas-microsoft-com:xml-msprop">
  <xs:element name="xmldata" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="groups">
          <xs:complexType>
            <xs:sequence>
              <xs:element msprop:TableNameXsd="groupid" name="groupid" msprop:SqlDbType="Int" msprop:IsIdentity="true" minOccurs="0" />
              <xs:element name="ParentID" msprop:SqlDbType="Int" minOccurs="0" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="groupproductlink">
          <xs:complexType>
            <xs:sequence>
              <xs:element msprop:TableNameXsd="groupproductlink" name="ID" msprop:SqlDbType="Int" msprop:IsIdentity="true" minOccurs="0" />
              <xs:element name="groupID" msprop:SqlDbType="Int" minOccurs="0" />
              <xs:element name="ProductCode" msprop:SqlDbType="Int" minOccurs="0" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="Products">
          <xs:complexType>
            <xs:sequence>
              <xs:element msprop:TableNameXsd="Products" name="AutoDropShip" msprop:maxLength="1" msprop:SQLTableAlias="p" msprop:SqlDbType="VarChar" msprop:SQLFrom="FROM vm.Products p INNER JOIN vm.Products_Descriptions pd ON p.ProductCode = pd.ProductCode INNER JOIN vm.PE pe ON p.ProductCode = pe.ProductCode INNER JOIN vm.Products_Memos pm ON p.ProductCode = pm.ProductCode" minOccurs="0" />
              <xs:element name="productid" msprop:maxLength="30" msprop:SQLTableAlias="p" msprop:SqlDbType="VarChar" minOccurs="1" />
              <xs:element name="ProductCode" msprop:SQLTableAlias="p" msprop:SqlDbType="Int" msprop:IsIdentity="true" minOccurs="0" />
              <xs:element name="ProductName" msprop:maxLength="255" msprop:SQLTableAlias="p" msprop:SqlDbType="VarChar" minOccurs="0" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>

XML应该是什么

需要以下列方式返回XML(请注意属性成为元素)

<groups>
    **<1> //<---Element=groupID**
        <item>133</item>
        <parentid>2</parentid>
        <ProductCode>blahblah</ProductCode>
        <ProductName>blahblah</ProductName>
    **</1> //<---Element=groupID
    <2> //<---Element=groupID**
        <item>134</item>
        <parentid>2</parentid>
        <ProductCode>blahblah</ProductCode>
        <ProductName>blahblah</ProductName>
    **</2> //<---Element=groupID
    <2> //<---Element=groupID**
        <item>313</item>
        <parentid>2</parentid>
        <ProductCode>blahblah</ProductCode>
        <ProductName>blahblah</ProductName>e="1">
    **</2> //<---Element=groupID
    <3> //<---Element=groupID**
        <item>46</item>
        <parentid>2</parentid>
        <ProductCode>blahblah</ProductCode>
        <ProductName>blahblah</ProductName>
    **</3> //<---Element=groupID**
</groups>

我尝试使用的XSD并没有得到任何响应

我尝试将上面列出的XSD转换为以下内容:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="groups" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
xmlns:msprop="urn:schemas-microsoft-com:xml-msprop">
  **<xs:element name="groups" *msdata:IsDataSet="true"* msdata:UseCurrentLocale="true">**
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="groupid" *msdata:IsDataSet="true"* msdata:UseCurrentLocale="true" msprop:TableNameXsd="groupid" msprop:SqlDbType="Int" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element msprop:TableNameXsd="groupid" name="groupid" msprop:SqlDbType="Int" msprop:IsIdentity="true" minOccurs="0" />
              <xs:element name="ParentID" msprop:SqlDbType="Int" minOccurs="0" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="groupproductlink">
          <xs:complexType>
            <xs:sequence>
              <xs:element msprop:TableNameXsd="groupproductlink" name="ID" msprop:SqlDbType="Int" msprop:IsIdentity="true" minOccurs="0" />
              <xs:element name="groupID" msprop:SqlDbType="Int" minOccurs="0" />
              <xs:element name="ProductCode" msprop:SqlDbType="Int" minOccurs="0" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="Products">
          <xs:complexType>
            <xs:sequence>
              <xs:element msprop:TableNameXsd="Products" name="AutoDropShip" msprop:maxLength="1" msprop:SQLTableAlias="p" msprop:SqlDbType="VarChar" msprop:SQLFrom="FROM vm.Products p INNER JOIN vm.Products_Descriptions pd ON p.ProductCode = pd.ProductCode INNER JOIN vm.PE pe ON p.ProductCode = pe.ProductCode INNER JOIN vm.Products_Memos pm ON p.ProductCode = pm.ProductCode" minOccurs="0" />
              <xs:element name="productid" msprop:maxLength="30" msprop:SQLTableAlias="p" msprop:SqlDbType="VarChar" minOccurs="1" />
              <xs:element name="ProductCode" msprop:SQLTableAlias="p" msprop:SqlDbType="Int" msprop:IsIdentity="true" minOccurs="0" />
              <xs:element name="ProductName" msprop:maxLength="255" msprop:SQLTableAlias="p" msprop:SqlDbType="VarChar" minOccurs="0" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>

然而, 它目前无效。我想也许我需要使用一个替换组,但不幸的是,自从我这样做了多年以来,我无法记住我到底需要做什么。我真的希望这里有人有更好的想法!

0 个答案:

没有答案