Announcement

Collapse
No announcement yet.

XML->XSL: Eine bestimmte Anzahl an Elementen auswählen

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

  • XML->XSL: Eine bestimmte Anzahl an Elementen auswählen

    Hallo @ all,

    ich habe ein XML-File, in dem 8 solche Elemente enthalten sind:

    Code:
    <ConnectionBlade>
        <No ID="1" MSO="true">
        <Type Name="LAN/FC switch modul type" MSO="true">	</Type>
        <Model NTH="true">               </Model>
        <HWVersion>                          </HWVersion>
        <FWVersion>                          </FWVersion>
        <MACAddr NTH="true">          </MACAddr>
        <IPAddr NTH="true">              </IPAddr>
    </ConnectionBlade>
    Jedes mit einer anderen ID (1-8)

    Der XSL-File nimmt nun alle diese Elemente und Ordnet sie neu:

    Code:
    <xsl:template match="/">
            ...
        <xsl:element name="System">
                  ...
             <xsl:element name="ConnectionBlade">
                      <xsl:call-template name="cblade" />
             </xsl:element>
            ....
    Code:
           ....
    <xsl:template name="cblade">
            <xsl:apply-templates select="//ConnectionBlade/No" />
    </xsl:template>
           ........

    Code:
         .......
    <xsl:template match="ConnectionBlade/No">
            <No ID="{@ID}" MSO="{@MSO}">
                <Type Name="{@Type}" MSO="true"><xsl:value-of select="Type"/>           </Type>
                <Model NTH="true"><xsl:value-of select="Model" />     </Model>
                <HWVersion><xsl:value-of select="HWVersion" />    </HWVersion>
                <FWVersion><xsl:value-of select="FWVersion" />    </FWVersion>
                <MACAddr NTH="true"><xsl:value-of select="MACAddr" />   </MACAddr>
                <IPAddr NTH="true"><xsl:value-of select="IPAddr" />     </IPAddr>
            </No>
    </xsl:template>
       .....
    Das klappt wunderbar.

    Ich brauche jetzt aber einen neuen XSL-File, der nur die ersten 4 Elemente aus wählt.

    Ich komme da einfach nicht weiter.
    Ich hoffe mir kann jemand helfen.

    lg kenny
    Zuletzt editiert von kenny; 18.08.2009, 16:32. Reason: Layout verbessert

  • #2
    so vielleicht


    Code:
    <xsl:apply-templates select="//ConnectionBlade/No[position()&lt;5]"/>

    Comment


    • #3
      Danke für die Antwort, aber es klappt nicht wirklich bei mir,
      habe verschiedene Versionen ausprobiert, kannst du vielleicht etwas genauer beschreiben, wo ich was verändern muss.

      Wenn ich nur das

      Code:
      <xsl:apply-templates select="//ConnectionBlade/No" />
      durch dein

      Code:
      <xsl:apply-templates select="//ConnectionBlade/No[position()&lt;5]"/>
      ersetzte, reicht das nicht aus.

      Comment


      • #4
        ich würde es so machen
        xml zum testen
        Code:
        <?xml version="1.0"?>
        <ConnectionBlade>
        	<No ID="1" MSO="true">
        		<Type Name="LAN/FC switch modul type" MSO="true">
        		</Type>
        		<Model NTH="true">
        		</Model>
        		<HWVersion>
        		</HWVersion>
        		<FWVersion>
        		</FWVersion>
        		<MACAddr NTH="true">
        		</MACAddr>
        		<IPAddr NTH="true">
        		</IPAddr>
        	</No>
        
        	<No ID="2" MSO="true">
        		<Type Name="LAN/FC switch modul type" MSO="true">
        		</Type>
        		<Model NTH="true">
        		</Model>
        		<HWVersion>
        		</HWVersion>
        		<FWVersion>
        		</FWVersion>
        		<MACAddr NTH="true">
        		</MACAddr>
        		<IPAddr NTH="true">
        		</IPAddr>
        	</No>
        
        	<No ID="3" MSO="true">
        		<Type Name="LAN/FC switch modul type" MSO="true">
        		</Type>
        		<Model NTH="true">
        		</Model>
        		<HWVersion>
        		</HWVersion>
        		<FWVersion>
        		</FWVersion>
        		<MACAddr NTH="true">
        		</MACAddr>
        		<IPAddr NTH="true">
        		</IPAddr>
        	</No>
        
        	<No ID="4" MSO="true">
        		<Type Name="LAN/FC switch modul type" MSO="true">
        		</Type>
        		<Model NTH="true">
        		</Model>
        		<HWVersion>
        		</HWVersion>
        		<FWVersion>
        		</FWVersion>
        		<MACAddr NTH="true">
        		</MACAddr>
        		<IPAddr NTH="true">
        		</IPAddr>
        	</No>
        
        	<No ID="5" MSO="true">
        		<Type Name="LAN/FC switch modul type" MSO="true">
        		</Type>
        		<Model NTH="true">
        		</Model>
        		<HWVersion>
        		</HWVersion>
        		<FWVersion>
        		</FWVersion>
        		<MACAddr NTH="true">
        		</MACAddr>
        		<IPAddr NTH="true">
        		</IPAddr>
        	</No>
        
        	<No ID="6" MSO="true">
        		<Type Name="LAN/FC switch modul type" MSO="true">
        		</Type>
        		<Model NTH="true">
        		</Model>
        		<HWVersion>
        		</HWVersion>
        		<FWVersion>
        		</FWVersion>
        		<MACAddr NTH="true">
        		</MACAddr>
        		<IPAddr NTH="true">
        		</IPAddr>
        	</No>
        
        	<No ID="7" MSO="true">
        		<Type Name="LAN/FC switch modul type" MSO="true">
        		</Type>
        		<Model NTH="true">
        		</Model>
        		<HWVersion>
        		</HWVersion>
        		<FWVersion>
        		</FWVersion>
        		<MACAddr NTH="true">
        		</MACAddr>
        		<IPAddr NTH="true">
        		</IPAddr>
        	</No>
        
        	<No ID="8" MSO="true">
        		<Type Name="LAN/FC switch modul type" MSO="true">
        		</Type>
        		<Model NTH="true">
        		</Model>
        		<HWVersion>
        		</HWVersion>
        		<FWVersion>
        		</FWVersion>
        		<MACAddr NTH="true">
        		</MACAddr>
        		<IPAddr NTH="true">
        		</IPAddr>
        	</No>
        </ConnectionBlade>
        Code:
        <?xml version="1.0"?>
        <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        	<xsl:output indent="yes" method="xml"/>
        	<xsl:template match="/">
        		<xsl:apply-templates select="ConnectionBlade"/>
        	</xsl:template>
        	<xsl:template match="ConnectionBlade">
        		<system>
        			<xsl:apply-templates select="No[position()&lt;5]"/>
        		</system>
        	</xsl:template>
        
        	<xsl:template match="No">
        
        		<No ID="{@ID}" MSO="{@MSO}">
        			<Type Name="{@Type}" MSO="true">
        				<xsl:value-of select="Type"/>
        			</Type>
        			<Model NTH="true">
        				<xsl:value-of select="Model"/>
        			</Model>
        			<HWVersion>
        				<xsl:value-of select="HWVersion"/>
        			</HWVersion>
        			<FWVersion>
        				<xsl:value-of select="FWVersion"/>
        			</FWVersion>
        			<MACAddr NTH="true">
        				<xsl:value-of select="MACAddr"/>
        			</MACAddr>
        			<IPAddr NTH="true">
        				<xsl:value-of select="IPAddr"/>
        			</IPAddr>
        		</No>
        	</xsl:template>
        </xsl:stylesheet>
        ergebnis
        Code:
        <?xml version='1.0' ?>
        <system>
          <No ID="1" MSO="true">
            <Type Name="" MSO="true">
        		
            </Type>
            <Model NTH="true">
        		
            </Model>
            <HWVersion>
        		
            </HWVersion>
            <FWVersion>
        		
            </FWVersion>
            <MACAddr NTH="true">
        		
            </MACAddr>
            <IPAddr NTH="true">
        		
            </IPAddr>
          </No>
          <No ID="2" MSO="true">
            <Type Name="" MSO="true">
        		
            </Type>
            <Model NTH="true">
        		
            </Model>
            <HWVersion>
        		
            </HWVersion>
            <FWVersion>
        		
            </FWVersion>
            <MACAddr NTH="true">
        		
            </MACAddr>
            <IPAddr NTH="true">
        		
            </IPAddr>
          </No>
          <No ID="3" MSO="true">
            <Type Name="" MSO="true">
        		
            </Type>
            <Model NTH="true">
        		
            </Model>
            <HWVersion>
        		
            </HWVersion>
            <FWVersion>
        		
            </FWVersion>
            <MACAddr NTH="true">
        		
            </MACAddr>
            <IPAddr NTH="true">
        		
            </IPAddr>
          </No>
          <No ID="4" MSO="true">
            <Type Name="" MSO="true">
        		
            </Type>
            <Model NTH="true">
        		
            </Model>
            <HWVersion>
        		
            </HWVersion>
            <FWVersion>
        		
            </FWVersion>
            <MACAddr NTH="true">
        		
            </MACAddr>
            <IPAddr NTH="true">
        		
            </IPAddr>
          </No>
        </system>

        Comment


        • #5
          Hi, danke, scheint zulaufen

          Comment

          Working...
          X