XML タグをあるものから別のものに非常に単純に変更しようとしています。xml ファイル内の他のものを変更したくありません。技術的な理由から、これを実行するには XSLT を使用する必要があります。
XSLT を使用して XML ファイル内の 1 つのタグ名を変更するこの投稿を見てきましたが、ロジックが機能していないようです。
私の入力XMLはこれであり、私ができるようにしたいのは、同期の開始タグと終了タグをそれぞれプロセスの開始タグと終了タグに変更することだけです。
<SyncCodeDefinition xmlns="xxx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schema.xxx.com/OAGIS/2 http://schema.xxx.com/2.6.5/OAGIS/BODs/Developer/mytest.xsd" releaseID="9.2">
<ApplicationArea>
<Sender>
<LogicalID schemeVersionID="12345">lid://xxx.yyy.zzz</LogicalID>
<ComponentID>test1</ComponentID>
</Sender>
<CreationDateTime>2012-09-11T17:07:04Z</CreationDateTime>
<BODID>xxxxx</BODID>
</ApplicationArea>
<DataArea>
<Sync>
<TenantID>xxxx</TenantID>
<AccountingEntityID>ZZZ</AccountingEntityID>
<ActionCriteria>
<ActionExpression actionCode="Add" />
</ActionCriteria>
</Sync>
<CodeDefinition>
<DocumentID>
<ID accountingEntity="ZZZ" variationID="1">TEST001_PRODUCT</ID>
</DocumentID>
<DisplayID>TEST001_PRODUCT</DisplayID>
<Status>
<Code listID="CodeDefinitionStatus">Open</Code>
</Status>
<ListID>PRODUCT</ListID>
<CodeValue accountingEntity="ZZZ" languageID="en-GB">TEST001</CodeValue>
<Name languageID="en-GB">new test</Name>
<Description languageID="en-GB">new test</Description>
</CodeDefinition>
</DataArea>
</SyncCodeDefinition>
これは私の XSLT ですが、replace ステートメントを無視しているようです。助けてください :)
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match=
"Sync[count(.|((//Sync)[1])) = 1]">
<Process>
<xsl:apply-templates />
</Process>
</xsl:template>
</xsl:stylesheet>