Difference between revisions of "XmlWiki"

From Organic Design wiki
(More Specifically)
(More Specifically)
Line 16: Line 16:
  
 
==More Specifically==
 
==More Specifically==
It hooks itself into the MediaWiki index.php file in three places (the OUTPUT hook has been put back into index.php again! and the XML-skin isn't needed). The index.php hooks are INIT, which is called on entry to require_once it, and INPUT, which is called before the POST-data is processed for saving. The OUTPUT hook then builds the output as a DOM-object and transforms it with the users' (or default) XSLT-skin.
+
There are five hooks now! but it's most efficient like this :-)
 +
 
 +
*'''INIT:''' This hooks into index.php after the environment has been established, but before any article or input processing occurs. This does the ''require_once'' of xmlwiki.php.
 +
*'''INPUT:''' This hooks into index.php before input processing so it can direct any XPath inputs into the article-DOM and transform them into a standard input for xmlWiki. This also handles write-permissions.
 +
*'''PARSER:''' This is a new compulsory skin (skins/xwskin.php) which renders the article output as a DOM-object. If the article is itself XML and includes XSLT references, or has a transform-list in its xml:article then those transforms are also applied here.
 +
*'''OUTPUT:''' This replaces the output rendering in index.php. It handles read permissions and transforms the xwskin-generated DOM-output with xmlwiki.xslt.
  
 
'''Current scripts:'''
 
'''Current scripts:'''
Line 24: Line 29:
  
 
'''Templates & Transforms:'''
 
'''Templates & Transforms:'''
*[[xmlwiki.xslt]] (not used yet - will build html-layout from XML-skin)
+
*[[xmlwiki.xslt]] xmlWiki page layout (not functional yet)
*[[xmlwiki.css]]
+
*[[xmlwiki.css]] xmlWiki page style
  
 
'''Wiki Objects available from OUTPUT-hook:'''
 
'''Wiki Objects available from OUTPUT-hook:'''
 
*[[Wiki Objects]]
 
*[[Wiki Objects]]

Revision as of 00:03, 14 June 2005

File:Xmlwiki old.jpg        Old logo: File:Xmlwiki wht.jpg

What is xmlWiki?

Articles in xmlWiki work just like the normal MediaWiki articles except, when their contents is xml. In this case it will be represented as a DOM object at runtime, and the content will be validated against any referenced DTD or xml-schema. If any XSLT's are referenced, xmlWiki will attempt to apply them to the article. If the XSLT-output-method is "html" then it will be reduced to a string.

How is it Installed?

It's three scripts (source below) which are in an "xmlwiki" directory in the main wiki folder. the hack is applied or removed by running the xmlwiki/index.php script. If xmlWiki is disabled then the security layer is also disabled, so the xmlwiki directory should be accessible only by admin.

How does it tie in with MediaWiki?

Two pseudo-namespaces have been added "xml" and "sys". These are both XML articles, and their contents affects the article they're associated with. Any sys:article is readable and writable only by users in the "admin" group.

  • The sys:article holds security information: owner, read-groups, write-groups
  • An xml:article is an XML article of docType "xmlwiki.dtd"
  • The xml:article contains the transform-list, publish-list and base-class-list

More Specifically

There are five hooks now! but it's most efficient like this :-)

  • INIT: This hooks into index.php after the environment has been established, but before any article or input processing occurs. This does the require_once of xmlwiki.php.
  • INPUT: This hooks into index.php before input processing so it can direct any XPath inputs into the article-DOM and transform them into a standard input for xmlWiki. This also handles write-permissions.
  • PARSER: This is a new compulsory skin (skins/xwskin.php) which renders the article output as a DOM-object. If the article is itself XML and includes XSLT references, or has a transform-list in its xml:article then those transforms are also applied here.
  • OUTPUT: This replaces the output rendering in index.php. It handles read permissions and transforms the xwskin-generated DOM-output with xmlwiki.xslt.

Current scripts:

Templates & Transforms:

Wiki Objects available from OUTPUT-hook: