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, 7844 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 ..
Neuester Wissensbeitrag
Windows 10

Sticky Notes - Autostart unterbinden

Tipp von Pedant zum Thema Windows 10 ...

Ähnliche Inhalte
XML
gelöst XML - XSLT Formatierung mehrere verschiedene Werte (13)

Frage von chrisen zum Thema XML ...

Router & Routing
Mikrotik Switching und Routing Problem (6)

Frage von aqui zum Thema Router & Routing ...

DNS
Mobiles DNS Problem bei VPN Verbindung (4)

Frage von holladie zum Thema DNS ...

Exchange Server
gelöst MS Exchange-Problem: Servername und Name im Zertifikat stimmen nicht überein (1)

Frage von KLeinstein.tm zum Thema Exchange Server ...

Heiß diskutierte Inhalte
Batch & Shell
gelöst Base64 Decode (Batch,VBS) (26)

Frage von clragon zum Thema Batch & Shell ...

Flatrates
DeutschlandLAN der Telekom - welche internen IPs? (19)

Frage von qualidat zum Thema Flatrates ...