У меня есть XML-файл с такой структурой:
<?xml version="1.0" encoding="utf-16"?>
<CSCNASN xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="AdvancedShipNotice.xsd">
<RecordType0>
<Darta1 />
<Darta2 />
</RecordType0>
<RecordType1>
<Darta1 />
<Darta2 />
</RecordType1>
</CSCNASN
Я хочу удалить всю часть рядом с тегом CSCNASN (xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="AdvancedShipNotice.xsd")
и создать XML-файл ста же структура, но только с тегом CSCNASN.
Я пытался с этим преобразованием, но оно не работает, как я хочу.Я определил переменную, чтобы выбрать все теги xml, чтобы заменить их.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:java="http://xml.apache.org/xslt/java"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="xml" indent="yes" />
<xsl:template match="/message">
<xsl:variable name="fileName">
<xsl:value-of select="@number"/>
</xsl:variable>
<xsl:variable name="outermostElementName" select="name(/*)" />
<xsl:variable name="prova">"CSCNASN\ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="AdvancedShipNotice.xsd""</xsl:variable>
<message>
<xsl:for-each select="./@*">
<xsl:copy />
</xsl:for-each>
<xsl:for-each select="./$prova">
<CSCNASN>
<xsl:attribute name="fileName">
<xsl:value-of select="$fileName" />
</xsl:attribute>
<xsl:apply-templates select="node()" />
</CSCNASN>
</xsl:for-each>
</message>
</xsl:template>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>