aboutsummaryrefslogtreecommitdiff
path: root/doc/ref/guile/sxml.texi
blob: 8b0246f7473625ae537a55b397ce34f469737d9c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
@node sxml namespaced
@section Namespaced SXML

Namespaces is a variant to ``regular'' SXML. Difference being that
instead of representing XML-tags as symbols, they are instead actual
objects.

For example
@example
`(a (b "Content"))
@end example

Would be represented as
@example
`(,(xml 'a)
  (,(xml 'b)
   "Content"))
@end example

@defun namespaced-sxml->sxml tree [namespace-prefixes='()]
Takes a tree of namespaced-sxml, and optionally an assoc list from
namespace symbols, to prefered prefix.

Returns a sxml tree, with xmlns:<prefix>=namespace attributes
@end defun

@defun namespaced-sxml->xml tree [namespaces='()] [port='(current-output-port)]
Serializes the namespaced sxml tree to port. @var{namespaces} should
be an association list from namespace symbols, to prefered prefixes.
@end defun

@defun namespaced-sxml->sxml/namespaces tree [namespace-prefixes='()]
Returns two values:
@itemize
@item An SXML tree (which doesn't have namespace attributes)
@item an association list from namespace symbols, to used prefixes.
@end itemize
@end defun

@c xml->namespcaed-sxml and sxml->namespaced-sxml don't share
@c implementation, despite doing almost the same thing. This is since
@c xml->namespaced-sxml directly uses the ssax parser, giving us great
@c controll, while sxml->namespaced-sxml attempt to look at symbols.

@defun xml->namespaced-sxml port-or-string
Reads xml from port, and return a namespaced SXML tree.
@end defun

@defun sxml->namespaced-sxml tree namespaces
Converts a ``regular'' SXML tree into a namespaced sxml tree.
@var{namespaces} must be an association list which maps each prefix
used in @var{tree} onto a full XML namespace.
@end defun

@defun xml tag
@defunx xml ns tag [attrs]
@anchor{xml-tag}
       A single XML element, suitable to go as the car of a list to
       create a full object.

       @var{xml} is a shorthand to @code{make-xml-element}, which
       either takes just a tag (for non-namespaced elements), or a
       namespace, a tag, and a list of attributes.

       @itemize
       @item @var{tag} should be a symbol.
       @item @var{ns} should be a symbol.
       @item @var{attrs} should be a hash table.
       @end itemize

       @defun make-xml-element tagname namespace attributes
       @end defun

       @defun xml-element? x
       @end defun

       @defun xml-element-tagname el
       @end defun

       @defun xml-element-namespace el
       @end defun

       @defun xml-element-attributes el
       @end defun
@end defun


@defun make-pi-element tag body
       @defun pi-element? x
       @end defun

       @defun pi-tag pi
       @end defun

       @defun pi-body pi
       @end defun
@end defun