summaryrefslogtreecommitdiff
path: root/NOTES
diff options
context:
space:
mode:
Diffstat (limited to 'NOTES')
-rw-r--r--NOTES253
1 files changed, 0 insertions, 253 deletions
diff --git a/NOTES b/NOTES
deleted file mode 100644
index 1314b8d1..00000000
--- a/NOTES
+++ /dev/null
@@ -1,253 +0,0 @@
-
- NOTES relative to the implementation
- ====================================
-
-xsl:stylesheet:
-
- all children except xsl:import can be in any order, so this
-can be stored as one big structure.
-
-xsl:include:
-
- this is really similar to XInclude, can be implemented as a
-nearly separate processing just after the XML stylesheet has been
-parsed.
- Detect loops using a limited stack ...
-
-xsl:import:
-
- seems this should be really implemented as having a stylesheet
-sublist being itself an import list
-
- add the list at the end
- when doing a resolution explore child before siblings in the list
-
-3 Data Model, we should operate on parsed trees
-
-3.1 No problem
-
-3.2 use the XML Base call, XSLT-1.1 references it
-
-3.4 Whitespace Stripping
-
- Seems one may have to do a bit of preprocessing on both the
-stylesheet trees and the source trees.
-
-4 Expressions
-
- looks okay, wondering about variable bindings though...
- default namespace not in scope
-
-5.1 Processing Model
-
- look in Michael Kay's book about how to efficiently find the
-template applying to a node. Might influence the in-memory stylesheet
-representation
-
-5.2 Patterns
-
- the end of that section suggest that the expression could be computed in
-a simpler way. Maybe templates needs to be evaluated differently than
-through the normal XPath processing. This can be implemented separately
-or build an expression tree in the XPath module and use a different
-evaluation mechanism. Not sure this is best.
-
-5.4 Applying Template Rules
-
- xsl:apply-templates is the recurstion mechanism, note the select
-mechanism.
-
- detection of loop: once the applied nodeset has been computed,
-check that none of the elements is part of the existing set in use, this
-may be costly and should be triggered only at a certain depth.
-
-5.5 Conflict Resolution for Template Rules
-
- Sounds again that evaluation of a pattern rule should provide one
-more information not provided by the standard XPath evaluation
-
-5.6 Overriding Template Rules
-
- another recursion mechanism, confirm that it is needed to separate
-the imported stylesheets.
-
-5.7 Modes
-
- Confusing ??? need an example.
-
-6 Named Templates
-
- No big deal it seems
-
-7.1.1 Literal Result Elements
-
- cleanup of the namespace template should be done initially at stylesheet
-parsing.
-
-7.1.2 Creating Elements with xsl:element
-
- okay, I bet it's usually used with { } expression computations
-
-7.1.3 Creating Attributes with xsl:attribute
-
- need some running code to better understand all the subtilties
-
-7.1.4 Named Attribute Sets
-
- Okay just a way to mimick param entities use fo attrib groups in Dtd's
-
-7.2 Creating Text
-
- adjacent text nodes are merged ... okay
- output escapeing might need a libxml API extension
-
-7.3 Creating Processing Instructions
-7.4 Creating Comments
-
- RAS, one just need to make a couple of trivial checks
-
-7.5 Copying
-
- Okay will need some testing
-
-7.6.1 Generating Text with xsl:value-of
-
- will be a good test for XPath string() function
- note in the example that the text nodes are coalesced
-
-7.6.2 Attribute Value Templates
-
- hum, this is
- - contextual
- - uses XPath
-
- best seems to parse, generate an evaluation tree then evaluate
-when accessed. Note that multipe expressions can be associated to
-a single attribute. Sounds like i will have to introduce a new
-element type inserted in the attribute nodelist. dohh ...
-
-7.7 Numbering
-
- sounds interesting for users but might be costly, we will see ...
-
-7.7.1 Number to String Conversion Attributes
-
- format="..." :-( it's gonna be painful ...
-
-8 Repetition
-9 Conditional Processing
-
- doesn't sounds hard to implement since we are at an interpreter
-level but really useful in practice. Will be simple once the overall
-framework is set-up.
-
-10 Sorting
-
- Okay applied to the node list of an xsl:apply-templates or xsl:for-each
-
- The NOTEs are a bit scary ...
-
-11 Variables and Parameters
-
- Variables can only be afttected at the top level, so it
-seems they act only as global variables ...
- But this is by regions .... so some of the statements within
-a stylesheet my use a different set than others ... in practice
-it turns to be nearly like loacal variables ....
- Need more thinking on this to handle it properly.
- Might explain on of TOM's requests w.r.t. variable resolution
-
-11.1 Result Tree Fragments
-
- Dohhh a new type ...
- actually it's just a node set restricted type
-
-11.2 Values of Variables and Parameters
-
- okay, real problem is scoping ...
-
-11.3 Using Values of Variables and Parameters with xsl:copy-of
-
- No surprize
-
-11.4 Top-level Variables and Parameters
-
- It is an error if a stylesheet contains more than one binding
- of a top-level variable with the same name and same import precedence
-
- => ah ah, so it seems one can associate the variable bindings
-to a stylesheet and if needed recurse down the import list if not
-found, would simplify things a lot !
-
- If the template or expression specifying the value of a global variable
-x references a global variable y, then the value for y must be computed
-before the value of x.
-
- => Values can probably be computed dynamically at reference
-time, if this generate a loop, then it's an error. Lazy computations
-are great ...
-
-11.5 Variables and Parameters within Templates
-
-
- xsl:variable is allowed anywhere within a template that an instruction
-is allowed. In this case, the binding is visible for all following siblings
-and their descendants.
- It is an error if a binding established by an xsl:variable or xsl:param
-element within a template shadows another binding established by an
-xsl:variable or xsl:param element also within the template.
-
- => the example seems to imply that we can simply keep a list of
- local variable binding to a template ... sounds fine.
-
-11.6 Passing Parameters to Templates
-
- => Okay the parameter overrides the local binding
-
-12.1 Multiple Source Documents
-12.2 Keys
-
- skipped for now
-
-12.3 Number Formatting
-
- reimplementing Java formatting in C is gonna be a pain !
-
-12.4 Miscellaneous Additional Functions
-
- current() => trivial
-
- unparsed-entity-uri() => support in uri.c should do
-
- generate-id() => use the in-memory address of the node ???
-
- system-property() => sounds simple
-
-13 Messages
-
- trivial I/Os
-
-14 Extensions
-15 Fallback
-
- skipped for now
-
-16 Output
-
-16.1 XML Output Method
-
- sounds that calling directly libxml output on the result tree
-should do it with a few caveats, for example one need to be
-able to parametrize the output
-
-16.2 HTML Output Method
-
- sounds that calling libxml HTML output should do it too
-
-16.3 Text Output Method
-
- doesn't sounds too hard ...
-
-16.4 Disabling Output Escaping
-
- hum ... might be a bit painful to implement with the current framework.