1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

[XSLT] Tag mit Namensraum kopieren

Dieses Thema im Forum "XML Technologien" wurde erstellt von schorschi123, 27. April 2012.

  1. schorschi123

    schorschi123 Grünschnabel

    Hallo liebe Forengemeinde!

    Zurzeit kämpfe ich mit einer XSL Transformation. Ziel der Transformation soll es sein, einen Knoten einer bestehenden XML-Datei mitsamt seiner "Kinderknoten" zu kopieren und in eine neue XML-Datei zu schreiben. Die Ausgangsdatei sieht dabei bspw. wie folgt aus:
    Code (Text):
    1. <?xml version="1.0"?>
    2. <?xml-stylesheet type="text/xsl" href="XSL.xsl"?>
    3. <data>
    4.     <general>
    5.         <contact>
    6.             <contact_name operator="=">Dummy, User</contact_name>
    7.             <date operator="=">2012-01-01</date>
    8.         </contact>
    9.     </general>
    10.     <source>
    11.         <?mso-application progid="Excel.Sheet"?>
    12.         <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40">
    13.             <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
    14.                 <Author>Dummy, User</Author>
    15.                 <LastAuthor>Dummy, User</LastAuthor>
    16.                 <Created>2012-01-01T11:00:00Z</Created>
    17.                 <Company>n.a.</Company>
    18.                 <Version>14.00</Version>
    19.             </DocumentProperties>
    20.             <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
    21.                 <AllowPNG/>
    22.             </OfficeDocumentSettings>
    23.             <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
    24.                 <WindowHeight>10035</WindowHeight>
    25.                 <WindowWidth>18195</WindowWidth>
    26.                 <WindowTopX>480</WindowTopX>
    27.                 <WindowTopY>75</WindowTopY>
    28.                 <ProtectStructure>False</ProtectStructure>
    29.                 <ProtectWindows>False</ProtectWindows>
    30.             </ExcelWorkbook>
    31.             <Styles>
    32.                 <Style ss:ID="Default" ss:Name="Normal">
    33.                     <Alignment ss:Vertical="Bottom"/>
    34.                     <Borders/>
    35.                     <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/>
    36.                     <Interior/>
    37.                     <NumberFormat/>
    38.                     <Protection/>
    39.                 </Style>
    40.                 <Style ss:ID="s62">
    41.                     <NumberFormat ss:Format="#,##0.00\ &quot;€&quot;"/>
    42.                 </Style>
    43.                 <Style ss:ID="s63">
    44.                     <NumberFormat ss:Format="0"/>
    45.                 </Style>
    46.             </Styles>
    47.             <Worksheet ss:Name="Sheet1">
    48.                 <Table ss:ExpandedColumnCount="4" ss:ExpandedRowCount="6" x:FullColumns="1" x:FullRows="1" ss:DefaultRowHeight="15">
    49.                     <Column ss:Index="3" ss:Width="108.75"/>
    50.                     <Row>
    51.                         <Cell>
    52.                             <Data ss:Type="String">ID</Data>
    53.                         </Cell>
    54.                         <Cell>
    55.                             <Data ss:Type="String">Name</Data>
    56.                         </Cell>
    57.                         <Cell>
    58.                             <Data ss:Type="String">Description</Data>
    59.                         </Cell>
    60.                         <Cell>
    61.                             <Data ss:Type="String">Price</Data>
    62.                         </Cell>
    63.                     </Row>
    64.                     <Row>
    65.                         <Cell ss:StyleID="s63">
    66.                             <Data ss:Type="Number">1005001</Data>
    67.                         </Cell>
    68.                         <Cell>
    69.                             <Data ss:Type="String">Article 1</Data>
    70.                         </Cell>
    71.                         <Cell>
    72.                             <Data ss:Type="String">Description of article 1</Data>
    73.                         </Cell>
    74.                         <Cell ss:StyleID="s62">
    75.                             <Data ss:Type="Number">10.99</Data>
    76.                         </Cell>
    77.                     </Row>
    78.                     <Row>
    79.                         <Cell ss:StyleID="s63">
    80.                             <Data ss:Type="Number">1005002</Data>
    81.                         </Cell>
    82.                         <Cell>
    83.                             <Data ss:Type="String">Article 2</Data>
    84.                         </Cell>
    85.                         <Cell>
    86.                             <Data ss:Type="String">Description of article 2</Data>
    87.                         </Cell>
    88.                         <Cell ss:StyleID="s62">
    89.                             <Data ss:Type="Number">599</Data>
    90.                         </Cell>
    91.                     </Row>
    92.                 </Table>
    93.                 <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
    94.                     <PageSetup>
    95.                         <Header x:Margin="0.3"/>
    96.                         <Footer x:Margin="0.3"/>
    97.                         <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
    98.                     </PageSetup>
    99.                     <Print>
    100.                         <ValidPrinterInfo/>
    101.                         <PaperSizeIndex>9</PaperSizeIndex>
    102.                         <HorizontalResolution>300</HorizontalResolution>
    103.                         <VerticalResolution>300</VerticalResolution>
    104.                     </Print>
    105.                     <Selected/>
    106.                     <Panes>
    107.                         <Pane>
    108.                             <Number>3</Number>
    109.                             <ActiveRow>9</ActiveRow>
    110.                             <ActiveCol>6</ActiveCol>
    111.                         </Pane>
    112.                     </Panes>
    113.                     <ProtectObjects>False</ProtectObjects>
    114.                     <ProtectScenarios>False</ProtectScenarios>
    115.                 </WorksheetOptions>
    116.             </Worksheet>
    117.             <Worksheet ss:Name="Sheet2">
    118.                 <Table ss:ExpandedColumnCount="1" ss:ExpandedRowCount="1" x:FullColumns="1" x:FullRows="1" ss:DefaultRowHeight="15">
    119.   </Table>
    120.                 <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
    121.                     <PageSetup>
    122.                         <Header x:Margin="0.3"/>
    123.                         <Footer x:Margin="0.3"/>
    124.                         <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
    125.                     </PageSetup>
    126.                     <ProtectObjects>False</ProtectObjects>
    127.                     <ProtectScenarios>False</ProtectScenarios>
    128.                 </WorksheetOptions>
    129.             </Worksheet>
    130.             <Worksheet ss:Name="Sheet3">
    131.                 <Table ss:ExpandedColumnCount="1" ss:ExpandedRowCount="1" x:FullColumns="1" x:FullRows="1" ss:DefaultRowHeight="15">
    132.   </Table>
    133.                 <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
    134.                     <PageSetup>
    135.                         <Header x:Margin="0.3"/>
    136.                         <Footer x:Margin="0.3"/>
    137.                         <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
    138.                     </PageSetup>
    139.                     <ProtectObjects>False</ProtectObjects>
    140.                     <ProtectScenarios>False</ProtectScenarios>
    141.                 </WorksheetOptions>
    142.             </Worksheet>
    143.         </Workbook>
    144.     </source>
    145. </data>
    Kopiert werden soll nun alles unter und einschließlich des Tags
    Code (Text):
    1. <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40">
    Ich habe über folgende Befehle versucht den entsprechenden Teil des Originals zu kopieren – jedoch ohne Erfolg:

    Code (Text):
    1. <?xml version="1.0"?>
    2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    3. <xsl:output method="xml"/>
    4.     <xsl:template match="data/source">
    5.             <xsl:copy-of select="Workbook"/>
    6.     </xsl:template>
    7. </xsl:stylesheet>
    Meine weiteren "Untersuchungen" haben ergeben, dass die Transformation funktioniert, wenn ich die Namenräume aus dem Workbook-Tag entferne. Könnt ihr mir sagen wie ich meinen XSL-Code anpassen muss, damit die Transformation auch mit den Namenräumen funktioniert?

    Im Voraus schon vielen Dank!
     
  2. deepthroat

    deepthroat Erfahrenes Mitglied

    Hi.

    Ganz einfach, definiere dir einen Namensraumpräfix für "urn:schemas-microsoft-com:eek:ffice:spreadsheet" und gib ihn beim xsl:copy im XPath an.
    Code (XML):
    1. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    2.  xmlns:spreadsheet="urn:schemas-microsoft-com:office:spreadsheet">
    3. ..
    4. xsl:copy-of select="spreadsheet:Workbook" />
    Gruß
     
    Zuletzt von einem Moderator bearbeitet: 23. Mai 2014
Die Seite wird geladen...