fredrikMedlem sedan dec. 19991 072 inlägg Jag har föjande xml-data:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<Config xmlns="http://vt.vbg/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://vt.vbg/ HelpConfig.xsd">
<FilePath>X:\VTHelpClient\HtmlHelp\VTHelp.chm</FilePath>
<Forms>
<Form name="frmStockSum" description="Formulär för lagerrapport">
<Controls>
<Control name="ltLine" description="Linjer för alla!">
<HelpString>MOM_LINE</HelpString>
<HelpKeyWord></HelpKeyWord>
<ToolTip>Här kommer ett tooltip!</ToolTip>
</Control>
</Controls>
</Form>
</Forms>
</Config>
Jag har även ett schema (XSD) som jag validerar mot.
Problemet är när jag försöker använda XPath för att hämta ut data. För så fort jag sätter dit attributen för xmlns m.fl i Config-elementet så hittar den inget...
...om jag däremot tar bort de attributen så kan jag hämta ut med XPath.
Jag använder tex. följande XPath:
Config/Forms
För att hämta alla Forms.
SPiNMedlem sedan mars 20007 896 inlägg Beskriver schemat strukturen annorlunda?
fredrikMedlem sedan dec. 19991 072 inlägg Schemat ser i nuläget ut som:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://vt.vbg/" targetNamespace="http://vt.vbg/">
<xs:element name="Config">
<xs:complexType>
<xs:sequence>
<xs:element name="FilePath" type="xs:string" minOccurs="0" />
<xs:element name="Forms" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Form" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attributeGroup ref="ConfigData" />
<xs:sequence>
<xs:element name="Controls" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Control" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attributeGroup ref="ConfigData" />
<xs:sequence>
<xs:element name="HelpString" type="xs:string" minOccurs="0" />
<xs:element name="HelpKeyWord" type="xs:string" minOccurs="0" />
<xs:element name="ToolTip" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- ATTRIBUTE_TEMPLATE -->
<xs:attributeGroup name="ConfigData">
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="description" type="xs:string" use="optional" />
</xs:attributeGroup>
</xs:schema>
<!--<xs:attributeGroup ref="ConfigData" />-->
Grejen är att jag inte ens kör någon validering när jag försöker hämta ut med XPath...
NÄR jag väl kör en validering mot schemat så får jag massor av fel...men det får bli steg 2...
**Red:**Jag får ett fel när jag lägger till <xs:attributeGroup ref="ConfigData" /> men enligt schemat så är den OK. (jag använder VS.NET)
SPiNMedlem sedan mars 20007 896 inlägg Då var det ju märkligt om du inte ens kör en validering, men uteslut inte att det har med schemat att göra - det är det enda tipset jag kan ge.
fredrikMedlem sedan dec. 19991 072 inlägg Min XPath hittar helt enklet inget när jag kör "Config/Forms" och attributet är där....tar jag bort det så hittar den det dock...
fredrikMedlem sedan dec. 19991 072 inlägg Jag vänder lite på problemet och börjar med valideringen nu istället.
Jag får felet:
Message:Element 'http://vt.vbg/:Config' has invalid child element 'http://vt.vbg/:FilePath'. Expected 'FilePath'. An error occurred at (3, 3)
Vilket jag inte alls kan förstå. Ok, XML-filen har "http://vt.vbg/" som xmlns, innebär det att den lägger det som prefix automatiskt på alla "childs"?
MEN jag har ju i schemat även där angett det xmlns?
fredrikMedlem sedan dec. 19991 072 inlägg Ok, det felet löste jag nu...det var pga. att jag glömt att lägga till attributet elementFormDefault="qualified" i min XSD.
Men jag kan fortfarande inte använda XPath för att hämta min data. Nu går för övrigt hela dokumentet igenom valideringen mot XSD.n.
fredrikMedlem sedan dec. 19991 072 inlägg Löst problement med XPath med nu.
Jag var tvungen att tala om för XPath-"motorn" vilka namespace jag använde samt ange ett prefix för dessa. Detta prefix fick jag sedan använda vid alla XPath-anrop.
Läs mer:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnexxml/html/xml05202002.asp