[.NET] Xpath & XLink

Pagina: 1
Acties:

  • cyspoz
  • Registratie: September 2001
  • Laatst online: 09-10 21:46

cyspoz

Relaxed, het zijn maar 1 en 0

Topicstarter
Ik heb 1 xml file die er voor het idee zo uit ziet:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?xml version="1.0" encoding="utf-8"?>
<definition xmlns:xlink="http://www.w3.org/1999/xlink">
  <items>
    <item1>
      <subitem id="0501" type="2" />
      <subitem id="0006" type="2" />
      <subitem id="0503" type="2" />
      <subitem id="0504" type="2" />
      <subitem id="0005" type="2" />
      <subitem id="0456" type="2" />
    </item1>
    <item2>
      <subitem id="0601" type="2" />
      <subitem id="0072" type="2" />
      <subitem id="0013" type="2" />
      <subitem id="1504" type="2" />
      <subitem id="2550" type="2" />
      <subitem id="5406" type="2" />
    </item2>
    <item3>
      <macro xlink:type="simple"
             xlink:href="example.xml#id('macro002')"
             xlink:show="replace">
      </macro>
    </item3>
  </items>
  <macro id="macro001">
      <subitem id="5504" type="2" />
      <subitem id="6550" type="2" />
      <subitem id="7406" type="2" />
  </macro>
  <macro id="macro002">
      <subitem id="5504" type="4" />
      <subitem id="6559" type="2" />
      <subitem id="4606" type="2" />
  </macro>
</definition>

Mijn bedoeling is dat de inhoud van <macro002> in <item3> komt te staan. En vervolgens met XPath queries kan doen. Een volgende query zou dan een resultaat moeten opleveren:
code:
1
//item3/subitem[@id='5504']/@type

Dit alles moet gebeuren in .NET 1.1 met XPath en XLink. Normale queries uitvoeren werkt wel, maar het gebruik maken van XLink in het document en vervolgens uitvoeren van een query op een item dat door XLink in het document geplaatst zou moeten worden wil niet werken. Ik heb daardoor nu een aantal vragen waar ik geen duidelijk antwoord op kan krijgen:

- Is wat ik wil mogelijk met XLink?
- Ondersteund het .NET 1.1 framework het al?
- Wat doe ik mogelijk fout?

De MSDN van microsoft is redelijk summier in het gebruik van XLink (mede doordat er nog geen enkele webbrowser is die het volgens mij volledig ondersteund) w3schools geeft niet echt duidelijke voorbeelden, waarschijnlijk om dezelfde reden. Met google kwam ik wat websites van IBM tegen, maar die hebben het meer over extern linken.

Verwijderd

Volgens mij klopt je XPath query niet helemaal. Het volgende zou wel moeten werken (Zo uit mijn hoofd):
code:
1
//item3/subitem[@id='5504']


en dan vervolgens iets in de trend van:
C#:
1
2
3
4
foreach(XmlNode node in xmlNodeList) 
{
  string value = node["type"].Value; 
}

  • cyspoz
  • Registratie: September 2001
  • Laatst online: 09-10 21:46

cyspoz

Relaxed, het zijn maar 1 en 0

Topicstarter
XPath Query is in orde. Als ik namelijk hem wijzig in iets voor item2 en dan een subitem id pak dat daar in voor komt dan werkt dat wel. Jou XPath query is trouwens ook goed, verschil met die van mij is dat die ook vereist dat er een 'type' attribuut aanwezig moet zijn. maar dat staat er even los van.

Verwijderd

cyspoz schreef op donderdag 01 februari 2007 @ 20:46:
XPath Query is in orde. Als ik namelijk hem wijzig in iets voor item2 en dan een subitem id pak dat daar in voor komt dan werkt dat wel. Jou XPath query is trouwens ook goed, verschil met die van mij is dat die ook vereist dat er een 'type' attribuut aanwezig moet zijn. maar dat staat er even los van.
Ik werd even in de waar gebracht door de '/' die er achter stond inderdaad.

  • cyspoz
  • Registratie: September 2001
  • Laatst online: 09-10 21:46

cyspoz

Relaxed, het zijn maar 1 en 0

Topicstarter
C#:
1
2
3
4
5
public static void main()
{
  Kick myKick as new Kick()
  myKick.kickTopic(this.topicID)
}

:)

[ Voor 23% gewijzigd door cyspoz op 04-02-2007 14:48 ]


  • Alex
  • Registratie: Juli 2001
  • Laatst online: 10-11 17:17
Volgens mij is het de bedoeling dat je voronamelijk zelf aan de slag gaat :). Dus wat heb je geprobeerd? Heb je geprobeerd de namespaces goed te laden? Hoe ziet het geladen XmlDocument er vervolgens uit? Hoe bekend ben je met System.Xml? Volgens mij si dit namelijk echt 2 minuutjes werk om zelf te bakken...

Maar om verder te gaan, je zei dat je gezocht hebt op MSDN. Deze link vind ik als ik zoek op '.net 1.1 xlink':
http://msdn2.microsoft.co...mlresolver.getentity.aspx

Volgens mij moet je hier weluit kunnen komen!

Deze post is bestemd voor hen die een tegenwoordige tijd kunnen onderscheiden van een toekomstige halfvoorwaardelijke bepaalde subinverte plagiale aanvoegend intentioneel verleden tijd.
- Giphart


  • cyspoz
  • Registratie: September 2001
  • Laatst online: 09-10 21:46

cyspoz

Relaxed, het zijn maar 1 en 0

Topicstarter
Alex, ik weet wel hoe ik met System.XML en System.XML.XPath om moet gaan. Dat is zeker niet het probleem en heb ik allemaal goed werkend. Het enige wat ik wilde is XLink techonologie erbij gebruiken.
Maar het ziet er naar uit dat nog geen enkel support er voor is. Er zijn zoiezo nog geen webbrowsers die hier native support voor bieden, de microsoft XML core kent het ook niet en daarmee houd het verhaal dus al snel op. 't Lijkt er op dat W3C weer iets moois heeft bedacht en het daar ook bij blijft.
Dus dit idee gaat voorlopig in de kast. Een work around zal voorlopig zijn om "handmatig" de links te doen.

  • Alex
  • Registratie: Juli 2001
  • Laatst online: 10-11 17:17
Heb je gekeken naar de MVP.XML?

Deze post is bestemd voor hen die een tegenwoordige tijd kunnen onderscheiden van een toekomstige halfvoorwaardelijke bepaalde subinverte plagiale aanvoegend intentioneel verleden tijd.
- Giphart

Pagina: 1