这是我的xml,我有简单的XSLT只更新一个元素并复制其他所有元素。
以下是我的XSLT
<?xml version='1.0' encoding='UTF-8'?>
<sip xmlns="urn:x-emc:ia:schema:sip:1.0">
<dss>
<holding>message</holding>
<id>message-2018-06-12-gthlZYrWZjJuQ</id>
<pdi_schema>urn:bhp:documentum:message.1.0</pdi_schema>
<production_date>2018-06-12T21:23:04.752+08:00</production_date>
<base_retention_date>2018-06-12T21:23:04.752+08:00</base_retention_date>
<producer>IA_Samples</producer>
<entity>IA</entity>
<priority>0</priority>
<application>IA</application>
</dss>
<production_date>2018-06-12T21:23:04.752+08:00</production_date>
<seqno>1</seqno>
<is_last>true</is_last>
<aiu_count>10</aiu_count>
<page_count>0</page_count>
<pdi_hash algorithm="SHA-256" encoding="base64">iLrzH22nT7Nr258E/oBve+dFDFFyUaMHGz2v9BoBSr0=</pdi_hash>
</sip>
在输出xml中,不会复制以下元素的属性
<?xml version="1.0"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="urn:x-emc:ia:schema:sip:1.0" xmlns:exsl="http://exslt.org/common"
xmlns:emc="urn:x-emc:ia:schema:sip:1.0"
extension-element-prefixes="exsl" xmlns:f="Functions" exclude-result-prefixes="emc xs xsl f">
<!-- template to copy elements -->
<xsl:template match="*">
<xsl:element name="{local-name()}">
<xsl:apply-templates select="node()" />
</xsl:element>
</xsl:template>
<!-- template to copy attributes -->
<xsl:template match="@*">
<xsl:attribute name="{local-name()}">
<xsl:value-of select="." />
</xsl:attribute>
</xsl:template>
<xsl:template match="emc:base_retention_date">
<base_retention_date>2016-06-30</base_retention_date>
</xsl:template>
</xsl:stylesheet>
我错过了什么?
答案 0 :(得分:0)
未复制属性,因为您没有复制它们。
如果要使用match =“@ *”的模板规则复制属性,则需要通过<xsl:apply-templates select="@*"/>
确保实际调用模板。