summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Sidwell <andy@entai.co.uk>2008-06-26 08:06:25 +0000
committerAndrew Sidwell <andy@entai.co.uk>2008-06-26 08:06:25 +0000
commitefd9329b7e3dce8fb3aef979d26a86568f8744be (patch)
tree9ea73b2531d9b757a968da87be96fa48fc4d723d
parentee7f42523421f2a2d7d2978e0497fb8f6919a2bd (diff)
downloadlibhubbub-efd9329b7e3dce8fb3aef979d26a86568f8744be.tar.gz
libhubbub-efd9329b7e3dce8fb3aef979d26a86568f8744be.tar.bz2
Add the basics of namespace support.
svn path=/trunk/hubbub/; revision=4452
-rw-r--r--include/hubbub/types.h13
-rw-r--r--src/tokeniser/tokeniser.c1
2 files changed, 14 insertions, 0 deletions
diff --git a/include/hubbub/types.h b/include/hubbub/types.h
index f427023..e56bae4 100644
--- a/include/hubbub/types.h
+++ b/include/hubbub/types.h
@@ -94,9 +94,22 @@ typedef struct hubbub_doctype {
} hubbub_doctype;
/**
+ * Possible namespaces
+ */
+typedef enum hubbub_ns {
+ HUBBUB_NS_HTML,
+ HUBBUB_NS_MATHML,
+ HUBBUB_NS_SVG,
+ HUBBUB_NS_XLINK,
+ HUBBUB_NS_XML,
+ HUBBUB_NS_XMLNS
+} hubbub_ns;
+
+/**
* Data for a tag
*/
typedef struct hubbub_tag {
+ hubbub_ns ns; /**< Tag namespace */
hubbub_string name; /**< Tag name */
uint32_t n_attributes; /**< Count of attributes */
hubbub_attribute *attributes; /**< Array of attribute data */
diff --git a/src/tokeniser/tokeniser.c b/src/tokeniser/tokeniser.c
index 2fe00ac..8815e60 100644
--- a/src/tokeniser/tokeniser.c
+++ b/src/tokeniser/tokeniser.c
@@ -3173,6 +3173,7 @@ void hubbub_tokeniser_emit_token(hubbub_tokeniser *tokeniser,
if (token->type == HUBBUB_TOKEN_START_TAG) {
tokeniser->context.last_start_tag_name = token->data.tag.name;
+ token->data.tag.ns = HUBBUB_NS_HTML;
} else if (token->type == HUBBUB_TOKEN_END_TAG) {
tokeniser->content_model = HUBBUB_CONTENT_MODEL_PCDATA;
}