нужна помощь в преобразованиях xslt в отношении пространств имен - PullRequest
0 голосов
/ 08 марта 2012

Я работаю над преобразованиями XSLT. Я застрял в одной точке.

Исходный XML:

   <?xml version="1.0" encoding="ISO-8859-1"?>
    <Content xmlns="uuid:4522eb85-0a47-45f9-8e2b-1f82c78fa920">
    <first xmlns="uuid:4522eb85-0a47-45f9-8e2b-1f82c78fa920">Hello World.This is Fisrt       field</first>
    <second xmlns="uuid:4522eb85-0a47-45f9-8e2b-1f82c78fa920">Hello World.This is second      field2</second>
   </Content>

Требуемый формат вывода:

<aaa>Hello World.This is Fisrt   field</aaa>
<bbb>Hello World.This is second field</bbb>

Пожалуйста, предложите решение для этого.

Я пробовал это

   <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns="uuid:4522eb85-0a47-45f9-8e2b-1f82c78fa920">
    <xsl:output method="xml" indent="yes"/>
    <xsl:template match="/">
    <aaa>
    <xsl:value-of select="Content/first"/>
    </aaa>
     </xsl:template>
    </xsl:stylesheet> 

Вывод, который я получил, это

 <?xml version="1.0" encoding="utf-8"?>
    <aaa xmlns="uuid:4522eb85-0a47-45f9-8e2b-1f82c78fa920"></aaa>

Требуется вывод

<aaa>Hello World.This is Fisrt   field</aaa>

1 Ответ

4 голосов
/ 08 марта 2012

Вот тот, который делает то, что вы хотите, см. Комментарии ниже.

<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:x="uuid:4522eb85-0a47-45f9-8e2b-1f82c78fa920">

  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="/">
    <xsl:element name="root">
      <xsl:element name="aaa">
        <xsl:value-of select="x:Content/x:first"/>
      </xsl:element>
      <xsl:element name="bbb">
        <xsl:value-of select="x:Content/x:second"/>
      </xsl:element>
    </xsl:element>
  </xsl:template>

</xsl:stylesheet>

Хотя некоторые процессоры xslt позволяют иметь более одного корневого элемента в результате, это не рекомендуется, так каксинтаксически противоречит стандарту.

...