Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

XSLT-Problem mit xlmns-Namespaces im XML-Source-File

Frage Entwicklung

Mitglied: 56760

56760 (Level 1)

02.11.2007, aktualisiert 16:17 Uhr, 7841 Aufrufe, 2 Kommentare

Nur ohne die Namespaces im ersten Tag, läuft die XSLT-Transformation wie erwartet.

Hallo,

weil msxslt keine xlmns-Namespaces im XML verarbeiten kann, bin ich auf Saxon umgestiegen.
Sowohl mit XSLT 1.0 noch XSLT 2.0 habe ich dort das folgende Problem:

Meine XML-Datei, die transformiert werden soll:


<?xml version="1.0" encoding="UTF-8"?>
<!-- Damit geht's -->

<taskmanager version="1.0" >

<!-- Damit nicht!
<taskmanager version="1.0" xmlns="NAMESPACE1"
xmlns:bis="NAMESPACE2"
xmlns:ddt="NAMESPACE3"
xmlns:cml="NAMESPACE4"
xmlns:log="NAMESPACE5"
....
>
-->

<tasks>
<import assembly="Test.dll" />
</tasks>


<!-- Irgendein Kommentar -->
<procedure>Test</procedure>



</taskmanager>

Mein xslt-Stylesheet sieht wie folgt aus:
<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform;>"

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

<xsl:template match="/">
<xsl:apply-templates select="taskmanager"/>
</xsl:template>

<xsl:template match="taskmanager">
<Taskmanager>
<xsl:apply-templates select="tasks"/>
<xsl:apply-templates select="procedure"/>
</Taskmanager>
</xsl:template>

<xsl:template match="tasks">
<Tasks>
</Tasks>
</xsl:template>

<xsl:template match="procedure">
<test>
<xsl:text>Test</xsl:text>
</test>
</xsl:template>
</xsl:stylesheet>

Nur, wenn ich die xlmns auskommentiere, dann erhalte ich das Ergebnis:

<?xml version="1.0" encoding="utf-8"?>
<Taskmanager>
<Tasks/>
<test>Test</test>
</Taskmanager>

Kommentier ich's wieder ein, dann erhalte ich nur:
<?xml version="1.0" encoding="utf-8"?>

aber keinen Fehler vom XSLT-Prozessor.

Kennt jemand eine Lösung wie es auch mit den xlmns-Namespaces klappt?

Herzlichen Dank im Voraus.
Mitglied: 56760
02.11.2007 um 13:17 Uhr
Ich hab inzwischen einen Lösungsansazt durch googeln gefunden.

Die Namespaces müssen auch ins XSLT rein:

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

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

xmlns="NAMESPACE1"
xmlns:bis="NAMESPACE2"
xmlns:ddt="NAMESPACE3"
xmlns:cml="NAMESPACE4"
xmlns:log="NAMESPACE5"
....

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

<xsl:template match="/">
<xsl:apply-templates select="taskmanager"/>
</xsl:template>

<xsl:template match="taskmanager">
<Taskmanager>
<xsl:apply-templates select="tasks"/>
<xsl:apply-templates select="procedure"/>
</Taskmanager>
</xsl:template>

<xsl:template match="tasks">
<Tasks>
</Tasks>
</xsl:template>

<xsl:template match="procedure">
<test>
<xsl:text>Test</xsl:text>
</test>
</xsl:template>
</xsl:stylesheet>

Aber leider hilft das auch nicht weiter.
Kommentiere ich nach dieser Änderung im XML die xmlns-Anteile wieder ein, dann ist das Ergebnis leider immer noch das alte.
Bitte warten ..
Mitglied: 56760
02.11.2007 um 16:17 Uhr
Inzwischen hab ich die Lösung gefunden.

http://www.webmasterworld.com/forum26/227.htm

Es ging nur um den ersten Namespace xlmns="NAMESPACE1"
Dieser muss im Stylesheet (wie im ersten Versuch bereits geschehen) mit einem Prefix (z. B. sio)eingefügt werden.

Anschließend alle Matches und selects um das Prefix "sio:" ergänzen.

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sio="NAMESPACE1">

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



<xsl:template match="/">
<xsl:apply-templates select="sio:taskmanager"/>
</xsl:template>

<xsl:template match="sio:taskmanager">
<Taskmanager>
<xsl:apply-templates select="sio:tasks"/>
<xsl:apply-templates select="sio:procedure"/>
</Taskmanager>
</xsl:template>

<xsl:template match="sio:tasks">
<Tasks>
</Tasks>
</xsl:template>

<xsl:template match="sio:procedure">
<test>
<xsl:text>Test</xsl:text>
</test>
</xsl:template>
</xsl:stylesheet>
Bitte warten ..
Ähnliche Inhalte
XML
gelöst XML - XSLT Formatierung mehrere verschiedene Werte (13)

Frage von chrisen zum Thema XML ...

Rechtliche Fragen
gelöst Microsoftkonto wurde gehackt - Liegt das Problem direkt bei Microsoft? (6)

Frage von Stefan007 zum Thema Rechtliche Fragen ...

Python
Problem mit Python und imaplib2

Frage von meinsm zum Thema Python ...

Windows 7
gelöst Windows 7 Umzug zum neuen PC (SATA-Problem) (7)

Frage von MaxMoritz6 zum Thema Windows 7 ...

Heiß diskutierte Inhalte
Exchange Server
gelöst Email in Exchange an 2ten Empfänger senden (18)

Frage von MultiStorm zum Thema Exchange Server ...

Weiterbildung
Gehaltsvorstellungen (14)

Frage von SYS64738 zum Thema Weiterbildung ...

Windows Server
gelöst Microsoft-Lizenz CALs und passendes Server-Betriebssystem (13)

Frage von planetIT2016 zum Thema Windows Server ...

Verschlüsselung & Zertifikate
gelöst Festplattenverschlüsselung im Ausland (13)

Frage von Nicolaas zum Thema Verschlüsselung & Zertifikate ...