Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 以下给定格式所需的XSLT映射帮助 公司00022639 地球信标 公司000226 GeoExplorer 2005系列_Xml_Xslt_Xslt 1.0 - Fatal编程技术网

Xml 以下给定格式所需的XSLT映射帮助 公司00022639 地球信标 公司000226 GeoExplorer 2005系列

Xml 以下给定格式所需的XSLT映射帮助 公司00022639 地球信标 公司000226 GeoExplorer 2005系列,xml,xslt,xslt-1.0,Xml,Xslt,Xslt 1.0,我需要将每一列映射成下面的xml格式 <i> <Row> <Column name="RecordID" sqltype="nvarchar">COMPANY00022639</Column> <Column name="product_name" sqltype="nvarchar">GeoBeacon</Column> </Row> <Row>

我需要将每一列映射成下面的xml格式

<i>
   <Row>
     <Column  name="RecordID"  sqltype="nvarchar">COMPANY00022639</Column>
     <Column  name="product_name"  sqltype="nvarchar">GeoBeacon</Column>
   </Row>
   <Row>
     <Column name="RecordID" sqltype="nvarchar">COMPANY000226</Column>
     <Column name="product_name" sqltype="nvarchar">GeoExplorer 2005 Series</Column>
   </Row>
</i>

我需要将每一行的每一列映射到两个不同的变量中,其中RecordID到Company_ID,product_name到xml中的product_name。 谁能帮我一下吗

最后,我需要我的结果集如下

<i> 
    <xsd:complexType name="remedyResponseObject">
        <xsd:sequence>
            <xsd:element minOccurs="1" maxOccurs="1" name="Company_ID" type="xsd:string"/>
            <xsd:element minOccurs="1" maxOccurs="1" name="product_name" type="xsd:string"/>
        </xsd:sequence>
    </xsd:complexType> 
</i> 

公司00022639
地球信标
公司000226
GeoExplorer 2005系列

您在这里不是映射到“变量”,而是将元素映射到其他元素。在XSLT上下文中说“variable”可能意味着您希望使用xsl:variable,但这里的情况并非如此

尽管如此,进行映射还是很简单的。您只需创建一个模板来匹配需要更改的元素,并输出希望映射到的新元素

例如,对于创建公司ID元素,模板如下所示

<i>
<remedyResponseObject>
<Company_ID>COMPANY00022639</Company_ID>
<product_name>GeoBeacon</product_name></remedyResponseObject>
<remedyResponseObject>
<Company_ID>COMPANY000226</Company_ID>
<product_name>GeoExplorer 2005 Series</product_name>
</remedyResponseObject>
</i>

对于产品名称也是如此

唯一的另一个模板是与根i元素匹配的模板,其中您只需输出相同的i元素,以及remedyResponseObject元素

试试这个XSLT

<xsl:template match="Column[@name='RecordID']">
    <Company_ID><xsl:value-of select="." /></Company_ID>
</xsl:template>

当应用于输入XML时,将输出以下内容

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes"/>

    <xsl:template match="i">
        <xsl:copy>
            <remedyResponseObject>
                <xsl:apply-templates />
            </remedyResponseObject>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="Column[@name='RecordID']">
        <Company_ID><xsl:value-of select="." /></Company_ID>
    </xsl:template>

   <xsl:template match="Column[@name='product_name']">
        <product_name><xsl:value-of select="." /></product_name>
    </xsl:template>
</xsl:stylesheet>

公司00022639
地球信标
公司000226
GeoExplorer 2005系列

您尝试了什么xslt?在这种情况下是否可以显示您试图实现的输出?谢谢嗨,我已经更新了xml格式,我想在这里映射它。请告诉我这是否足够。
<i>
   <remedyResponseObject>
      <Company_ID>COMPANY00022639</Company_ID>
      <product_name>GeoBeacon</product_name>
      <Company_ID>COMPANY000226</Company_ID>
      <product_name>GeoExplorer 2005 Series</product_name>
   </remedyResponseObject>
</i>