xml mit xlst umwandeln

snooper1337

Cadet 1st Year
Registriert
Nov. 2009
Beiträge
12
xml mit xslt umwandeln

Hallo,

ich habe das Problem, dass mir bei einem Export eine .xml Datei erstellt, diese aber für ein anderes Programm so nicht zu gebrauchen ist. Wie kann ich mittels XSLT die XML so umwandeln das sie wie die unten gezeigte XML Datei aussieht ?

So siehts aus:
Code:
<?xml version="1.0" encoding="UTF-8" ?> 
- <form:Documents xmlns:form="http://www.abbyy.com/FlexiCapture/Schemas/Export/FormData.xsd" xmlns:addData="http://www.abbyy.com/FlexiCapture/Schemas/Export/AdditionalFormData.xsd">
- <_Steuerbescheid:_Steuerbescheid addData:ImagePath="Steuerbescheid_00000147.pdf" xmlns:_Steuerbescheid="http://www.abbyy.com/FlexiCapture/Schemas/Export/Steuerbescheid.xsd">
- <_Section1>
  <_VorgangNummer>54645645</_VorgangNummer> 
  <_Date>08.05.2009</_Date>  
  <_tsenit_SCIDocSending>Eingang</_tsenit_SCIDocSending> 
  </_Section1>
  </_Steuerbescheid:_Steuerbescheid>
  </form:Documents>

So soll es aussehen:
Code:
<?xml version="1.0" encoding="UTF-8" ?> 
- <Batch>
- <File>
  <IndexField Name="_VorgangNummer" Value="54645645" Type="STRING" Alias="" /> 
  <IndexField Name="_Date" Value="08.05.2009" Type="STRING" Alias="" /> 
  <IndexField Name="_tsenit_SCIDocSending" Value="Eingang" Type="STRING" Alias="" /> 
  </File>
  </Batch>

Vielen Dank im Voraus :)
 
Zuletzt bearbeitet:
Korinthe: Es heißt XSLT, nicht XLST :)

Dieses Skript sollte dir weiterhelfen:

Code:
<?xml version="1.0" encoding="UTF-8"?>

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:output method="xml" encoding="UTF-8" indent="yes"/>

<xsl:template match="/">
<xsl:variable name="vorgangNummer" select="//_VorgangNummer/text()"/>
<xsl:variable name="date" select="//_Date/text()"/>
<xsl:variable name="sciDocSending" select="//_tsenit_SCIDocSending/text()"/>
<Batch>
	<File>
		<IndexField Name="_VorgangNummer" Value="{$vorgangNummer}" Type="STRING" Alias="" /> 
		<IndexField Name="_Date" Value="{$date}" Type="STRING" Alias="" /> 
		<IndexField Name="_tsenit_SCIDocSending" Value="{$sciDocSending}" Type="STRING" Alias="" />
	</File>
</Batch>
</xsl:template>

</xsl:transform>
 
AW: xml mit xslt umwandeln

Super, vielen Dank, das hat mir sehr geholfen :)
 
hoi,

könnte jemand mal paar praktische Anwendungsgebiete (konkrete) nennen, wo eine transformation mit xslt benutzt wird?
 
Hi
wir haben es nun doch etwas anders gelöst, siehe xslt code.

Code:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
            <xsl:output method="xml" indent="yes" version="1.0"/>
            
                        <xsl:template match="_VorgangNummer">
                        <xsl:text>
             </xsl:text>
                        <xsl:element name="IndexField">
                                   <xsl:attribute name="Name">VorgangNummer</xsl:attribute>
                                   <xsl:attribute name="VALUE"><xsl:value-of select="."/></xsl:attribute>
                                   <xsl:attribute name="TYPE">STRING</xsl:attribute>
                                   <xsl:attribute name="Alias"/>
                        </xsl:element>
                        <xsl:text>
             </xsl:text>
            </xsl:template>
            <xsl:template match="_Date">
                        <xsl:element name="IndexField">
                                   <xsl:attribute name="Name">Date</xsl:attribute>
                                   <xsl:attribute name="VALUE"><xsl:value-of select="."/></xsl:attribute>
                                   <xsl:attribute name="TYPE">STRING</xsl:attribute>
                                   <xsl:attribute name="Alias"/>
                        </xsl:element>
                        <xsl:text>
             </xsl:text>
            </xsl:template>
</xsl:stylesheet>

... habe allerdings folgendes Problem. Denn die Ausgabe soll so aussehen:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<Batch>
            <File>
                         <IndexField Name="VorgangNummer" VALUE="10000003" TYPE="STRING" Alias=""/>
                         <IndexField Name="Date" VALUE="08.05.2009" TYPE="STRING" Alias=""/>
             </File>
 </Batch>
Wie man sieht fehlt <Batch> und <File> in meinem xslt code. Wie bekomme ich das zusätzlich rein ?
 
Füge noch den folgenden Code hinzu (ohne Gewähr, da nicht getestet):

Code:
<xsl:template match="/">
<Batch>
    <File>
        <xsl:apply-templates select="//_Section1"/>
    </File>
</Batch>
</xsl:template>
 
Danke, ich probiere es gleich aus.
Ergänzung ()

Vielen Dank nochmal, es funktioniert !
 
Simple Man schrieb:
hoi,

könnte jemand mal paar praktische Anwendungsgebiete (konkrete) nennen, wo eine transformation mit xslt benutzt wird?

claW. schrieb:

/pwned :D


Ich hab mich vor kurzem auch mit XSLT beschäftigen müssen.
Immer, wenn XML-Daten präsentiert werden sollen, kommt XSLT zum Einsatz!

So können die XML-Daten in ein anderes Format übersetzt (transformiert) werden - bei WoW beispielsweise: HTML/XHTML.

Dennoch können die zugrundeliegenden XML-Daten ohne Transformationen beispielsweise von anderen Webseiten weiterverarbeitet werden, ohne wieder HTML-Tags und -Attribute aus dem gerenderten Output filtern zu müssen.
 
Hallo,

ich habe noch eine Kleinigkeit.
Ich möchte diesen Wert ( ImagePath ) noch auslesen
Code:
<form:Documents xmlns:form="http://www.abbyy.com/FlexiCapture/Schemas/Export/FormData.xsd" 
xmlns:addData="http://www.abbyy.com/FlexiCapture/Schemas/Export/AdditionalFormData.xsd">
            <_Steuerbescheid:_Steuerbescheid addData:ImagePath="Steuerbescheid_00000147.pdf" 
xmlns:_Steuerbescheid="http://www.abbyy.com/FlexiCapture/Schemas/Export/Steuerbescheid.xsd">
                        <_Section1>
                                   <_VorgangNummer>10000003</_VorgangNummer>
                                   <_Date>08.05.2009</_Date>
Zu finden unter
Code:
<_Steuerbescheid:_Steuerbescheid
addData:ImagePath="Steuerbescheid_00000147.pdf"

Problem ist aber der Namensraum „addData“

Wie bekomme ich den ImagePath am besten ausgelesen?

Vielen Dank :)
Ergänzung ()

Habs gerade selber gelöst. Trotzdem vielen Dank :)
 
Zurück
Oben