Jag har skapat ett XML-schema som innehåller regler på hur XML-strukturen får se ut. När jag startar min app och laddar XML-dokumentet så validerar jag det samtidigt mot schemat. Men för att sedan kunna skapa element/attribut enligt schemats regler så letar jag efter något smidigt sätt att kunna ta reda vilka regler som gäller för ett givet element/attribut. Får man skapa några element i det här elementet? och i så fall vilka. Vilka attribut och datatyper kan man använda osv. När du läser in din XML fil med schemat så skall XMLDOM fixa detta åt dig. Alltså ge fel om du inte kan lägga till saker som inte finns deffinerat i schemat. Ok jag förstår. Men i min app vill jag lista upp vilka element och attribut som man får Äntligen så hittade jag en lösning det hela. Jag fick leta lite i "Locals"-fönstret. Regler via Schema
Målet är att min app lista upp vilka element/attribut som får skapas i respektive element.
Jag använder mig av MSXML 4.0, VB 6, Win XP Sv: Regler via Schema
//Johan NSv: Regler via Schema
skapa på det aktuella elementet. Sv: Regler via Schema
Jag skickar med lite kod hur jag löste det och vet ni något bättre sätt får ni gärna
bidra med kodexempel.
'objNode = XML-noden där jag vill undersöka vilka element och attribut man får skapa
Set objSchemaElement = objSchemaCache.getDeclaration(objNode)
Set objSchemaType = objSchemaElement.Type
'Hämtar alla element som får finnas
ReturnDefinition = " Följande element får skapas Element: "
For Each objSchemaTmpElement In objSchemaType.contentModel.particles
ReturnDefinition = ReturnDefinition & vbNewLine & objSchemaTmpElement.Name & _
", datatyp=" & objSchemaTmpElement.Type.Name
Next
'Hämtar alla attribut som får skapas
ReturnDefinition = ReturnDefinition & vbNewLine & vbNewLine & " Följande attribut får skapas: "
For Each objSchemaTmpAttr In objSchemaType.Attributes
ReturnDefinition = ReturnDefinition & vbNewLine & objSchemaTmpAttr.Name & _
", datatyp=" & objSchemaTmpAttr.Type.Name
Next