Атрибуты xslt не копируются - PullRequest
0 голосов
/ 13 июня 2018

Это мой xml, у меня есть простой 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>

Ниже мой XSLT

<?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>

В выходном xmlатрибуты элементов ниже не копируются

 <pdi_hash algorithm="SHA-256" encoding="base64">iLrzH22nT7Nr258E/oBve+dFDFFyUaMHGz2v9BoBSr0=</pdi_hash>

Чего мне не хватает?

1 Ответ

0 голосов
/ 13 июня 2018

Атрибуты не копируются, потому что вы их не копируете.

Если вы хотите скопировать атрибуты, используя правило шаблона с match = "@ *", то вам нужно убедиться, что шаблонфактически вызывается, делая <xsl:apply-templates select="@*"/>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...