Итак, у меня есть входной файл, который использует пространство имен моей компании в пространстве имен по умолчанию (xmlns="companyURL"
), но я хочу, чтобы мой выходной файл использовал что-то отличное от пространства имен по умолчанию (xmlns:cmp="companyURL"
).Поэтому я создаю свой файл, используя пространство имен cmp
, но затем я хочу скопировать некоторые внутренние элементы:
<xsl:element name="cmp:container">
<xsl:for-each select="foo">
<xsl:copy-of select="." />
</xsl:for-each>
</xsl:element>
К сожалению, для этого определено пространство имен по умолчанию для каждого из этих внутренних элементов,делая файл невероятно многословным и безобразным.Упрощенный пример:
Источник :
<foo xmlns="companyURL">
<num1>asdf</num1>
<num2>ghjkl</num2>
</foo>
Превращается в:
<cmp:container xmlns:cmp="companyURL">
<num1 xmlns="companyURL">asdf</num1>
<num2 xmlns="companyURL">ghjkl</num2>
</cmp:container>
Конечно, companyURL
большой, длинный и некрасивыйи в обоих случаях это одно и то же, поэтому я бы предпочел, чтобы приведенный выше результат просто был следующим:
<cmp:container xmlns:cmp="companyURL">
<cmp:num1>asdf</cmp:num1>
<cmp:num2>ghjkl</cmp:num2>
</cmp:container>
Есть ли простой способ сделать это, или я должен преобразовать все под cmp
пространство имен в пространство имен по умолчанию?Я бы предпочел использовать явное именование пространства имен, если это возможно, это помогает понять XSLT в моем опыте.