Xslt 将中的元素集移动到其他块

Xslt 将中的元素集移动到其他块,xslt,Xslt,下面是我需要在中移动块的xml XML文件: <?xml version="1.0" encoding="UTF-8"?> <employeeInfo xmlns="http://myweb.com"> <employeePersonalDetails> <name>ABC</name> <Age>29</Age> <Sex>Male</S

下面是我需要在
中移动
块的xml

XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<employeeInfo xmlns="http://myweb.com">
    <employeePersonalDetails>
        <name>ABC</name>
        <Age>29</Age>
        <Sex>Male</Sex>
    </employeePersonalDetails>
    <employeeAddress>
        <Address>345, 4th main</Address>
        <country>LA</country>
        <pincode>560037</pincode>
    </employeeAddress>
</employeeInfo>

基础知识
29
男性
第四大街345号
洛杉矶
560037
下面是用于移动


上述xslt的输出在
中移动
块。但是这个操作是复制粘贴<代码>块保留在同一位置

输出:

<?xml version="1.0" encoding="utf-8"?>
<employeeInfo>
    <employeePersonalDetails>
        <name>ABC</name>
        <Age>29</Age>
        <Sex>Male</Sex>
    </employeePersonalDetails><employeeAddress>
        <Address>345, 4th main</Address>
        <country>LA</country>
        <pincode>560037</pincode>
    </employeeAddress>
    <employeeAddress>
        <Address>345, 4th main</Address>
        <country>LA</country>
        <pincode>560037</pincode>
    </employeeAddress>
</employeeInfo>

基础知识
29
男性
第四大街345号
洛杉矶
560037
第四大街345号
洛杉矶
560037

在上面的输出中,我们可以看到
是重复的。我是否需要再编写一个xslt来删除
?或者,也可以使用相同的xslt完成此转换。

此转换:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:ns="http://myweb.com">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

    <xsl:template match="*">
        <xsl:element name="{local-name()}">
            <xsl:apply-templates select="@*|node()"/>
        </xsl:element>
    </xsl:template>
    <xsl:template match="@*">
        <xsl:attribute name="{local-name()}">
            <xsl:value-of select="."/>
        </xsl:attribute>
    </xsl:template>

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

    <xsl:template match="//ns:employeePersonalDetails">
        <xsl:element name="{local-name()}">
            <xsl:apply-templates select="@*|node()"/>
            <xsl:apply-templates select="../ns:employeeAddress" mode="copy"/>
        </xsl:element>
    </xsl:template>

    <xsl:template mode="copy" match="*">
        <xsl:element name="{local-name()}">
            <xsl:apply-templates select="@*|node()"/>
        </xsl:element>
    </xsl:template>

    <xsl:template match="ns:employeeAddress"/>
</xsl:stylesheet>
<employeeInfo xmlns="http://myweb.com">
    <employeePersonalDetails>
        <name>ABC</name>
        <Age>29</Age>
        <Sex>Male</Sex>
    </employeePersonalDetails>
    <employeeAddress>
        <Address>345, 4th main</Address>
        <country>LA</country>
        <pincode>560037</pincode>
    </employeeAddress>
</employeeInfo>
<employeeInfo>
   <employeePersonalDetails>
      <name>ABC</name>
      <Age>29</Age>
      <Sex>Male</Sex>
      <employeeAddress>
         <Address>345, 4th main</Address>
         <country>LA</country>
         <pincode>560037</pincode>
      </employeeAddress>
   </employeePersonalDetails>
</employeeInfo>

应用于提供的XML文档时

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:ns="http://myweb.com">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

    <xsl:template match="*">
        <xsl:element name="{local-name()}">
            <xsl:apply-templates select="@*|node()"/>
        </xsl:element>
    </xsl:template>
    <xsl:template match="@*">
        <xsl:attribute name="{local-name()}">
            <xsl:value-of select="."/>
        </xsl:attribute>
    </xsl:template>

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

    <xsl:template match="//ns:employeePersonalDetails">
        <xsl:element name="{local-name()}">
            <xsl:apply-templates select="@*|node()"/>
            <xsl:apply-templates select="../ns:employeeAddress" mode="copy"/>
        </xsl:element>
    </xsl:template>

    <xsl:template mode="copy" match="*">
        <xsl:element name="{local-name()}">
            <xsl:apply-templates select="@*|node()"/>
        </xsl:element>
    </xsl:template>

    <xsl:template match="ns:employeeAddress"/>
</xsl:stylesheet>
<employeeInfo xmlns="http://myweb.com">
    <employeePersonalDetails>
        <name>ABC</name>
        <Age>29</Age>
        <Sex>Male</Sex>
    </employeePersonalDetails>
    <employeeAddress>
        <Address>345, 4th main</Address>
        <country>LA</country>
        <pincode>560037</pincode>
    </employeeAddress>
</employeeInfo>
<employeeInfo>
   <employeePersonalDetails>
      <name>ABC</name>
      <Age>29</Age>
      <Sex>Male</Sex>
      <employeeAddress>
         <Address>345, 4th main</Address>
         <country>LA</country>
         <pincode>560037</pincode>
      </employeeAddress>
   </employeePersonalDetails>
</employeeInfo>

基础知识
29
男性
第四大街345号
洛杉矶
560037
生成所需的正确结果

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:ns="http://myweb.com">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

    <xsl:template match="*">
        <xsl:element name="{local-name()}">
            <xsl:apply-templates select="@*|node()"/>
        </xsl:element>
    </xsl:template>
    <xsl:template match="@*">
        <xsl:attribute name="{local-name()}">
            <xsl:value-of select="."/>
        </xsl:attribute>
    </xsl:template>

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

    <xsl:template match="//ns:employeePersonalDetails">
        <xsl:element name="{local-name()}">
            <xsl:apply-templates select="@*|node()"/>
            <xsl:apply-templates select="../ns:employeeAddress" mode="copy"/>
        </xsl:element>
    </xsl:template>

    <xsl:template mode="copy" match="*">
        <xsl:element name="{local-name()}">
            <xsl:apply-templates select="@*|node()"/>
        </xsl:element>
    </xsl:template>

    <xsl:template match="ns:employeeAddress"/>
</xsl:stylesheet>
<employeeInfo xmlns="http://myweb.com">
    <employeePersonalDetails>
        <name>ABC</name>
        <Age>29</Age>
        <Sex>Male</Sex>
    </employeePersonalDetails>
    <employeeAddress>
        <Address>345, 4th main</Address>
        <country>LA</country>
        <pincode>560037</pincode>
    </employeeAddress>
</employeeInfo>
<employeeInfo>
   <employeePersonalDetails>
      <name>ABC</name>
      <Age>29</Age>
      <Sex>Male</Sex>
      <employeeAddress>
         <Address>345, 4th main</Address>
         <country>LA</country>
         <pincode>560037</pincode>
      </employeeAddress>
   </employeePersonalDetails>
</employeeInfo>

基础知识
29
男性
第四大街345号
洛杉矶
560037
解释:“删除”
匿名模式下的员工地址
,以命名模式处理