Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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
Xslt 复制后展平XML_Xslt - Fatal编程技术网

Xslt 复制后展平XML

Xslt 复制后展平XML,xslt,Xslt,我需要基于重复字段创建xml记录的副本,我可以这样做,但是我需要将结果展平 我尝试使用变量并将它们复制到输出中 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes"/> <xsl:template

我需要基于重复字段创建xml记录的副本,我可以这样做,但是我需要将结果展平

我尝试使用变量并将它们复制到输出中

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
    <Hire>
        <xsl:for-each select="Hire/Record">
            <xsl:variable name="var_record" select="./* 
                             [not(name()='Sweldo')]" />
            <xsl:for-each select="Sweldo">
            <xsl:variable name="var_SWELDO" select="."> 
                            </xsl:variable>
            <Record>
            <xsl:copy-of select="$var_record" />
            <xsl:copy-of select="$var_SWELDO" />
            </Record>
            </xsl:for-each>
        </xsl:for-each>
    </Hire>
   </xsl:template>
</xsl:stylesheet>

输入是

 <?xml version="1.0" encoding="UTF-8"?>
 <Hire>
 <Record>
 <XRefCode>XX</XRefCode>
 <EmployeeNumber>161</EmployeeNumber>
 <BirthDate>1985-04-09</BirthDate>
 <SocialSecurityNumber>XXXXXXX</SocialSecurityNumber>
 <FirstName>XX</FirstName>
 <LastName>XX</LastName>
 <MiddleName>D</MiddleName>
 <Sweldo>
  <sahod>ONE MILLION</sahod>
 </Sweldo>
 <Sweldo>
  <sahod>1 BILLION</sahod>
 </Sweldo>
 </Record>
 </Hire>

XX
161
1985-04-09
XXXXXXX
XX
XX
D
一百万
十亿
我得到的结果是

  <?xml version="1.0"?>
  <Hire>
  <Record>
 <XRefCode>161</XRefCode>
 <EmployeeNumber>161</EmployeeNumber>
 <BirthDate>1985-04-09</BirthDate>
 <SocialSecurityNumber>999-81-9462</SocialSecurityNumber>
 <FirstName>XXX</FirstName>
 <LastName>XXXXX</LastName>
 <MiddleName>D</MiddleName>
 <Sweldo>
  <sahod>ONE MILLION</sahod>
 </Sweldo>
 </Record>
 <Record>
 <XRefCode>161</XRefCode>
 <EmployeeNumber>161</EmployeeNumber>
 <BirthDate>1985-04-09</BirthDate>
 <SocialSecurityNumber>999-81-9462</SocialSecurityNumber>
 <FirstName>XXX</FirstName>
 <LastName>XXXX</LastName>
 <MiddleName>D</MiddleName>
 <Sweldo>
  <sahod>1 BILLION</sahod>
 </Sweldo>
 </Record>
 </Hire>

161
161
1985-04-09
999-81-9462
XXX
XXXXX
D
一百万
161
161
1985-04-09
999-81-9462
XXX
XXXX
D
十亿
但是我需要以下格式

  <?xml version="1.0"?>
  <Hire>
  <Record>
  <XRefCode>161</XRefCode>
  <EmployeeNumber>161</EmployeeNumber>
  <BirthDate>1985-04-09</BirthDate>
  <SocialSecurityNumber>999-81-9462</SocialSecurityNumber>
  <FirstName>XXXX</FirstName>
  <LastName>XXXXXX</LastName>
  <MiddleName>D</MiddleName>
  <sahod>ONE MILLION</sahod>
  </Record>
 <Record>
 <XRefCode>161</XRefCode>
 <EmployeeNumber>161</EmployeeNumber>
 <BirthDate>1985-04-09</BirthDate>
 <SocialSecurityNumber>999-81-9462</SocialSecurityNumber>
 <FirstName>XXXX</FirstName>
 <LastName>XXXX</LastName>
 <MiddleName>D</MiddleName>
 <sahod>1 BILLION</sahod>
 </Record>
 </Hire>

161
161
1985-04-09
999-81-9462
XXXX
XXXXXX
D
一百万
161
161
1985-04-09
999-81-9462
XXXX
XXXX
D
十亿

有没有办法完全删除该元素?

请检查并更新以下代码:-

<xsl:for-each select="Sweldo">

      **change to**

<xsl:for-each select="Sweldo/sahod">

**改为**
谢谢。我把它改成了