Announcement

Collapse
No announcement yet.

Namespaceausgabe

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Namespaceausgabe

    Hallo!

    Ich bin noch ziemlich unerfahren mit XSLT und brauche daher mal einen Tipp.

    Ich möchte mittels XSLT aus einem XML-Dokument eine XAML-Datei erstellen. Funktioniert auch recht gut. Das Problem ist, dass in der Ausgabe das Attribut xmlns:x="x" auftaucht, und ich bekomm es nicht weg.

    Hab es schon mit exclude-result-prefixes="x" versucht, damit verschwindet aber nur die Namespaceangabe im Wurzelknoten, die soll aber erhalten bleiben.

    Hier mal ein Ausschnitt aus einer XSLT-Datei

    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    version="2.0">   
    	
        <xsl:template match="rule2">
        
        	<xsl:param name="height_widget"/>
            <xsl:param name="width_widget_large"/>
        	<xsl:variable name="name" select="@name"/>
        	
       	<xsl:element name="Label">
            	<xsl:attribute name="x:Name" namespace="x" >
                	<xsl:text>id</xsl:text>
                	<xsl:value-of select="$name"/>
                </xsl:attribute>
               ...
            </xsl:element>
        </xsl:template>
    </xsl:stylesheet>
    In der Ausgabe steht dann:

    Code:
     
    <Label xmlns:x="x" x:Name="id26" Height="28" Width="250" BorderThickness="1" BorderBrush="#FFA5ACB2" />
    Das Rote soll weg nur wie??

  • #2
    Lasse namespace="x" einfach weg. Ist ja auch nicht der richtige, denn das "x" steht für den NS-URI und dieser kann bereits im Wurzelelement (z. B. bei Canvas) deklariert werden.

    BTW: Vermeide xsl:element und xsl:attribute, wenn diese nicht dynamisch benannt oder deren Inhalt dynamisch generiert wird. Das steht so nur in schlechten Büchern! Diese literale Form reicht völlig aus und ist sofort auch besser lesbar, wartbarer, letzlich auch performanter:
    Code:
    <Label x:Name="id{$name}">
      <!-- ... -->
    </Label>

    Comment


    • #3
      Danke, danke.

      Auf die Idee bin ich nich gekommen.

      Wünsch dir und auch allen anderen schöne Weihnachten

      Comment

      Working...
      X