You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@vxquery.apache.org by Vinayak Borkar <vb...@yahoo.com> on 2012/05/06 08:48:56 UTC
Data format for XQuery Data Model Items
Here is a fragment of a proposal for representing XQuery Data for
elements, attributes, and sequence in byte form. More data type will
follow later.
These byte representations would be used by all the functions to
interpret data and implement XQuery functionality.
Element {
ElementHeader header;
Metadata md?;
NamePtr namePtr;
NodeId nodeId?;
NamePtr typePtr?;
NamespaceChunk nsChunk?;
AttributesChunk attrChunk?;
ChildrenChunk childrenChunk?;
}
ElementHeader (padded) {
bit[2] mdChunkSizeSize;
bit[2] nodeIdSizeSize;
bit[2] nsChunkSizeSize;
bit[2] attrChunkSizeSize;
bit[2] childrenChunkSizeSize;
bit typeExists;
}
Metadata {
MetadataSize mdSize;
// TBD: metadata data
}
NamePtr {
byte[2] ptr;
}
NodeId {
byte[size] id; // size = decode(ElementHeader.nodeIdSizeSize)
}
NamespaceChunk {
byte[size] chunkSizeInBytes; // size =
decode(ElementHeader.nsChunkSizeSize)
NamePtr[2][chunkSizeInBytes / (sizeof(NamePtr) * 2)] namespaces;
}
AttributeChunk {
byte[size] chunkSizeInBytes; // size =
decode(ElementHeader.attrChunkSizeSize)
Attribute* attributes;
}
Attribute {
NamePtr name;
varInt dataLen;
byte[dataLen] data;
}
ChildrenChunk {
byte[size] chunkSizeInBytes; // size =
decode(ElementHeader.childrenChunkSizeSize)
Sequence children;
}
Sequence {
SequenceItem* items; // list ends when itemLenInBytes = 0
}
SequenceItem {
varInt itemLenInBytes;
byte[itemLenInBytes] item
}