Avatar billede barn Nybegynder
08. oktober 2002 - 16:43 Der er 1 kommentar og
1 løsning

referere et element via dets attribut?

Hey jeg har et problem med at lave et schema ud fra følgende xml doc. Hver computer kan indeholde mange Class'er og hver Class med forskellig Name attribut er forskellig i strukturen, her et eksempel med kun to forskellige typer Class
 
  <Computers>
 
      <Computer Name="COM20">
     
        <Class Name="Win32_LogicalDisk">
            <Caption>A:</Caption>
            <Size />
            <FreeSpace />
        </Class>
       
        <Class Name="Win32_LogicalDisk">
            <Caption>C:</Caption>
            <Size>4293562368</Size>
            <FreeSpace>1856524288</FreeSpace>
        </Class>
               
        <Class Name="Win32_PageFileUsage">       
            <Caption>C:\pagefile.sys</Caption>
            <AllocatedBaseSize>768</AllocatedBaseSize>
            <CurrentUsage>139</CurrentUsage>
            <Name>C:\pagefile.sys</Name>
          <PeakUsage>556</PeakUsage>
        </Class>
      </Computer>
     
  </Computers>

*********Slut på xml dokument. Nu definerer jeg schemaet*******



<?xml version="1.0"?>
  <xsd:schema >
    <xsd:element name="Class" >
    <xsd:complexType>
      <xsd:attribute name = "Win32_LogicalDisk" type="xsd:string"/>
    <xsd:sequence>
    <xsd:element name="owner"  type="xsd:integer"/>
    <xsd:element name="Caption"  type="xsd:string"/>
      <xsd:element name="Size"  type="xsd:double"/>
      <xsd:element name="FreeSpace"  type="xsd:double"/>
      </xsd:sequence>
      </xsd:complexType>
     
    </xsd:element>


    <xsd:element name= "Class" >
    <xsd:complexType>
    <xsd:attribute name = "Win32_PageFileUsage" type="xsd:string"/>
  <xsd:sequence>
      <xsd:element name="owner"  type="xsd:integer"/>
      <xsd:element name="Caption"  type="xsd:string"/>
      <xsd:element name="AllocatedBaseSize"  type="xsd:int"/>
      <xsd:element name="CurrentUsage"  type="xsd:int"/>
      <xsd:element name="Name"  type="xsd:string"/>
      <xsd:element name="PeakUsage"  type="xsd:int"/>
  </xsd:sequence>
      </xsd:complexType>
    </xsd:element>
   

    <xsd:element name="Computer" >
    <xsd:complexType>
    <xsd:sequence>
   
*****Og her går det galt, i sequencen vil jeg først have Win32_LogicalDisk Class, og derefter the Win32_PageFileUsage. Den følgende linie er IKKE korrekt, men jeg ved ikke hvordan man refererer et element ved dets attribut****
       
      <element ref="Class" minOccurs="1" maxOccurs="unbounded" />
      </xsd:sequence>
      </xsd:complexType>
    </xsd:element>

  </xsd:schema>
Avatar billede sagdjb Nybegynder
10. oktober 2002 - 11:50 #1
Du har to Class element i roden... det må man ikke, lav det til et, og lav en choice imellem de to. En anden fejl er attributten, hvor du har sat name = "zxcvb"... name på atributten bør være "name", og værdien bør være "zxcvb". Fik du den??
Avatar billede barn Nybegynder
10. oktober 2002 - 13:46 #2
Jeg valgte at ændre på xml dokumentet, sådan at navnet ikke bliver en attribut, men i stedet for at alle elementerne hedder Class, hedder de nu Win32_LogicalDisk osv. Det virker også mere "naturligt". Det med attributten, du har jo ret! Men alle de eksempler jeg har arbejdet ud fra har gjort sådan.... Jeg tror lige det skal rettes
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester