XIQE/Schuzky/4.5.2006
Z FI WIKI
Schůzka týmu XIQE ze dne 4. 5. 2006
Schůzka začne ve 13:00 v NLP labu. Zúčastní se část vývojářů komponenty Core.
Očekávaná účast
- Petr Adámek
- Petr Vlček
- Josef Šustáček
- Michal Krčál
- Zdeněk Zikán (přijde ve 14:00)
Témata k diskusi
- Sémantika rozhraní
NodeResolver
(chování metodygetDocumentNode(int documentId)
, nekonzistence metodygetOwnerDocument(NodeId node)
s kontraktem W3C DOM -- vracet Document i pro parametr typu Document). - Použití
QName
v rozhraníNodeResolver
(metodaString getNodeName(NodeId node)
) -- QName jako návratový typ místo Stringu -
DocumentStructureIndex
: Přejmenování metodygetRootElementId
nagetRootNodeId
? - Manipulace s indexy na úrovni kolekce (chybí rozhraní, viz Ticket #35)
- Vnější rozhraní XIQE a sémantika existujících rozhraní (Zdeněk Zikán)
- Rozhrani na pripojovani/odpojovani uzlu
- DOM Nody mohou existovat i nepripojene (jake
NodeId
jim priradit) -- resit na urovni NodeResolveru (nutna moznost zmeny NodeId) (ci jineho rozhrani) nebo na urovni DOMu - jak nakladat s operacemi nad nepripojenym
Nodem
(nepripojenemuNodu
pripojim potomka, atribut...) - co s
NodeId
, kdyz uzel odpojim a pripojim nekde jinde - nemusi se pri pripojeni
Nodu
jinam preindexovat cely strom? co potom s cachemi?NodeId
uzlu je ulozeno i u vsech jeho atributu - musi se pri odpojeni
Nodu
projit cely podstrom jeho potomku a vsechny poodpojovat? jak celou hierarchii uchovat nepripojenou? (stejne jako bod 2) - pridavani/odebirani atributu (stejny problem s NodeId jako v bodu 2)
- rozhrani na zmenu obsahu uzlu, atributu
- atributy ve W3C DOMu (
QName
v konstruktoru), jejich samostatne cachovani vDOMModelu
-
StoragePlanStub
-- napsat vlastní SAX handler pro vybudování DOM modelu dokumentu
- pozn. -- resit na urovni NodeResolveru (nutna moznost zmeny NodeId) (ci jineho rozhrani) nebo na urovni DOMu, pokud by nebyla potreba NodeId, pripada v uvahu jeho nahrazani za typ long
Návrhy
- Ponechat objekt NodeId. Pokud je to statická strukutra, tak NodeId může nést i strukturální informaci. V případě dynamické struktury musím mít strukturální informaci jinde, nebo musím mít sofistikovaný mechanismus ošetření změny NodeId. V případě použití striktně statických NodeId lze místo objektu použít typ long.
- Podpora nepřipojených uzlů -- podpora v rozhraní pro změny dokumentu, pokud to nějaká struktura neumí, tak se ošetří dekorátorem, který bude operaci simulovat a odpojené uzly bude držet v paměti.
- DOMNodeMapping -- idea vytvoření vlastní implementace NodeId, která bude obsahovat DOM Node uvnitř -- odpadá nutnost hledání v mapě. Otázka je, jak zjistit NodeId pro daný DOM node?
- Nove rozhrani na meneni, metody typu NodeId createElement(QName qName) a void addNode(NodeId insertedNode, NodeId parent), void insertBefore(NodeId insertedNode, NodeId insertBefore), void setAttribute(NodeId node, QName name, String value), removeAttribute(NodeId node, QName name).
- Do NodeResolveru přidat metodu getTextContent(NodeId node), která bude vracet textovou hodnotu uzlu (rekurzivní procházení potomků v AbstractNodeResolveru).
- formát URI: xmldb:xiqe:file:///cesta.ke.kolekci nebo xmldb:xiqe:net://server:port/cesta.ke.kolekci