--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/xquery/trunk/XQuery__XQueryDataContextItem.st Tue Apr 08 19:47:42 2008 +0000
@@ -0,0 +1,158 @@
+"{ Package: 'stx:goodies/xmlsuite/xquery' }"
+
+"{ NameSpace: XQuery }"
+
+Object subclass:#XQueryDataContextItem
+ instanceVariableNames:'item type'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'XQuery-DataNodes'
+!
+
+
+!XQueryDataContextItem class methodsFor:'accessing - type codes'!
+
+typeBoolean
+ ^#boolean.
+
+ "Created: / 07-07-2006 / 16:17:20 / ked"
+!
+
+typeNCName
+ ^#ncname.
+
+ "Created: / 18-11-2006 / 16:26:37 / ked"
+!
+
+typeNode
+ ^#node.
+
+ "Created: / 07-07-2006 / 16:15:39 / ked"
+!
+
+typeNumber
+ ^#number.
+
+ "Created: / 07-07-2006 / 20:40:38 / ked"
+!
+
+typeQName
+ ^#qname.
+
+ "Created: / 03-09-2006 / 11:53:26 / ked"
+!
+
+typeString
+ ^#string.
+
+ "Created: / 07-07-2006 / 16:17:06 / ked"
+! !
+
+!XQueryDataContextItem methodsFor:'accessing'!
+
+item
+ ^ item
+
+ "Created: / 07-07-2006 / 16:18:50 / ked"
+!
+
+item:something
+
+ self assert: item isNil.
+ item := something.
+
+ "Created: / 07-07-2006 / 16:18:50 / ked"
+ "Modified: / 07-10-2006 / 22:50:43 / ked"
+!
+
+type
+ ^ type
+
+ "Created: / 07-07-2006 / 16:18:51 / ked"
+!
+
+type:something
+
+ self assert: type isNil.
+ type := something.
+
+ "Created: / 07-07-2006 / 16:18:51 / ked"
+ "Modified: / 07-10-2006 / 22:51:03 / ked"
+! !
+
+!XQueryDataContextItem methodsFor:'converting'!
+
+asDocumentFragment
+
+ | domBuilder |
+ domBuilder := XMLv2::DOM3Builder new.
+ XQueryResultXMLReader new
+ setDocumentAdaptor: XPathDocumentAdaptorProxy new;
+ setContentHandler: domBuilder;
+ visit: item.
+ ^domBuilder document
+
+ "Created: / 10-12-2006 / 20:30:57 / janfrog"
+ "Modified: / 14-11-2007 / 14:35:31 / janfrog"
+!
+
+asString
+
+ ^item asString
+
+ "Created: / 12-10-2006 / 17:33:20 / ked"
+!
+
+value
+
+ | children |
+
+ type = XQueryDataContextItem typeNode ifTrue:[
+ item xpathIsText ifTrue:[
+ "TODO - pokus o typovou 'heuristiku' na beztypovych datech"
+ ^Object errorSignal
+ handle:[:ex | ex returnWith:(item xpathValue)]
+ do:[item xpathValue asNumber].
+ ].
+ item xpathIsAttribute ifTrue:[
+ ^item xpathValue
+ ] ifFalse:[
+ self assert: item xpathIsElement.
+
+ children := item xpathChild.
+
+ children size = 0 ifTrue:[
+ ^nil.
+ ].
+
+ self assert: children size = 1.
+ self assert: children first item xpathIsText.
+
+ "TODO - pokus o typovou 'heuristiku' na beztypovych datech"
+ ^Object errorSignal
+ handle:[:ex | ex returnWith:(children first item xpathValue)]
+ do:[children first item xpathValue asNumber].
+ ]
+ ] ifFalse:[
+ ^item
+ ].
+
+ "Created: / 06-10-2006 / 16:17:20 / ked"
+ "Modified: / 19-10-2006 / 23:11:01 / ked"
+ "Modified: / 12-12-2006 / 13:16:12 / janfrog"
+! !
+
+!XQueryDataContextItem methodsFor:'initialization & release'!
+
+releaseResources
+
+ ^item releaseResources
+
+ "Created: / 12-12-2006 / 10:44:07 / janfrog"
+! !
+
+!XQueryDataContextItem class methodsFor:'documentation'!
+
+version
+ ^ '$Header: /opt/data/cvs/stx/goodies/xmlsuite/xquery/XQuery__XQueryDataContextItem.st,v 1.6 2007-11-15 19:01:49 vranyj1 Exp $'
+! !