"{ Package: 'stx:goodies/xmlsuite/xquery' }"
"{ NameSpace: XQuery }"
Object subclass:#XQuerySequenceItem
instanceVariableNames:'item'
classVariableNames:''
poolDictionaries:''
category:'XQuery-Interpreter'
!
!XQuerySequenceItem class methodsFor:'instance creation'!
with: item
^self new
item: item;
type: self typeNode
"Created: / 20-09-2007 / 12:16:18 / janfrog"
!
withAttribute: node
^self new item: node
"Created: / 21-03-2007 / 14:31:40 / janfrog"
"Modified: / 05-12-2007 / 15:58:47 / janfrog"
!
withBoolean: boolean
^self new
item: boolean
"Created: / 21-03-2007 / 14:24:49 / janfrog"
"Modified: / 05-12-2007 / 15:58:58 / janfrog"
!
withNode: node
^self new
item: node
"Created: / 21-03-2007 / 14:31:40 / janfrog"
"Modified: / 05-12-2007 / 15:59:03 / janfrog"
!
withNumber: number
^self new item: number
"Created: / 21-03-2007 / 14:24:29 / janfrog"
"Modified: / 05-12-2007 / 15:21:08 / janfrog"
!
withString: string
^self new
item: string
"Created: / 21-03-2007 / 15:45:27 / janfrog"
"Modified: / 05-12-2007 / 15:59:08 / janfrog"
!
withText: string
^self new
item: (XQueryConstructedNode new
nodeType: XQueryConstructedNode nodeTypeText;
nodeValue: string)
"Created: / 28-03-2007 / 22:50:10 / janfrog"
"Modified: / 05-12-2007 / 15:59:13 / janfrog"
! !
!XQuerySequenceItem class methodsFor:'accessing - type codes'!
typeAttribute
^TypeItem attribute
"Created: / 07-07-2006 / 16:16:21 / ked"
"Modified: / 05-12-2007 / 15:18:13 / janfrog"
!
typeBoolean
<resource: #obsolete>
^self typeXSBoolean
"Created: / 07-07-2006 / 16:17:20 / ked"
"Modified: / 05-12-2007 / 15:22:42 / janfrog"
!
typeElement
^TypeElement instance
"Created: / 05-12-2007 / 15:55:13 / janfrog"
!
typeNode
^TypeItem node
"Created: / 07-07-2006 / 16:15:39 / ked"
"Modified: / 05-12-2007 / 15:20:09 / janfrog"
!
typeNumber
^#number.
"Created: / 07-07-2006 / 20:40:38 / ked"
!
typeQName
<resource: #obsolete>
^self typeXSQName
"Created: / 03-09-2006 / 11:53:26 / ked"
"Modified: / 05-12-2007 / 15:24:38 / janfrog"
!
typeString
<resource: #obsolete>
^self typeXSString
"Created: / 07-07-2006 / 16:17:06 / ked"
"Modified: / 05-12-2007 / 15:23:24 / janfrog"
!
typeXSBoolean
^TypeItem xsBoolean
"Created: / 05-12-2007 / 15:22:13 / janfrog"
!
typeXSDecimal
^TypeXSDecimal instance
"Created: / 05-12-2007 / 15:43:52 / janfrog"
!
typeXSFloat
^TypeItem xsFloat
"Created: / 05-12-2007 / 15:15:54 / janfrog"
!
typeXSInteger
^TypeItem xsInteger
"Created: / 05-12-2007 / 15:29:06 / janfrog"
!
typeXSNCName
^TypeItem xsNCName
"Created: / 05-12-2007 / 15:23:03 / janfrog"
!
typeXSQName
^TypeItem xsQName
"Created: / 05-12-2007 / 15:24:38 / janfrog"
!
typeXSString
^TypeItem xsString
"Created: / 07-07-2006 / 16:17:06 / ked"
"Modified: / 05-12-2007 / 15:38:47 / janfrog"
! !
!XQuerySequenceItem methodsFor:'accessing'!
documentAdaptor
^self item documentAdaptor
"Created: / 24-10-2007 / 16:08:30 / janfrog"
!
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"
!
nodeId
^self item nodeId
"Created: / 24-10-2007 / 16:08:35 / janfrog"
!
stringValue
^self containsAtomicValue
ifTrue:[item printString]
ifFalse:[item xpathValue]
"Created: / 19-11-2007 / 14:20:59 / janfrog"
!
type
^"type"item xqueryType
"Created: / 07-07-2006 / 16:18:51 / ked"
"Modified: / 05-12-2007 / 15:12:13 / janfrog"
! !
!XQuerySequenceItem 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-12-2006 / 14:59:20 / janfrog"
!
asString
^item asString
"Created: / 12-10-2006 / 17:33:20 / ked"
!
asXQueryConstructedNode
(self type isSubtypeOf: self class typeNode) ifTrue:[^item].
(self type isSubtypeOf: self class typeAttribute) ifTrue:[^item].
^XQueryConstructedNode new
nodeType: XQueryConstructedNode nodeTypeText;
nodeValue: item asString
"Created: / 29-03-2007 / 13:37:19 / janfrog"
"Modified: / 05-12-2007 / 21:38:30 / janfrog"
!
value
| children |
(self type isSubtypeOf: XQuerySequenceItem 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 xpathIsText.
"TODO - pokus o typovou 'heuristiku' na beztypovych datech"
^Object errorSignal
handle:[:ex | ex returnWith:(children first xpathValue)]
do:[children first xpathValue asNumber].
]
] ifFalse:[
^item
].
"Created: / 06-10-2006 / 16:17:20 / ked"
"Modified: / 19-10-2006 / 23:11:01 / ked"
"Modified: / 05-12-2007 / 16:03:57 / janfrog"
! !
!XQuerySequenceItem methodsFor:'initialization & release'!
releaseResources
^item releaseResources
"Created: / 12-12-2006 / 10:44:07 / janfrog"
! !
!XQuerySequenceItem methodsFor:'printing'!
printOn: aStream
item printOn: aStream.
aStream
space;
nextPut:$[;
nextPutAll:self type printString;
nextPut:$].
"Created: / 21-03-2007 / 15:41:51 / janfrog"
"Modified: / 05-12-2007 / 20:48:26 / janfrog"
! !
!XQuerySequenceItem methodsFor:'testing'!
containsAtomicValue
^self containsNode not
"Created: / 18-11-2007 / 09:34:22 / janfrog"
!
containsCellStoreNode
^self containsNode and:[item isCellStoreNode]
"Created: / 05-12-2007 / 10:06:30 / janfrog"
!
containsNode
^item isKindOf: XQueryAbstractNode
"Created: / 18-11-2007 / 09:34:08 / janfrog"
! !
!XQuerySequenceItem class methodsFor:'documentation'!
version
^ '$Header: /opt/data/cvs/stx/goodies/xmlsuite/xquery/XQuery__XQuerySequenceItem.st,v 1.10 2007-12-05 21:11:49 vranyj1 Exp $'
! !