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
解释:“删除”匿名模式下的员工地址
,以命名模式处理