Beste lezers,
Omdat er nog geen reactie kwam op mijn post, hierbij een overzicht van mijn klassen en de container waar de content in terrecht komt.
In de hoop dat iemand dit leest en me kan helpen.
Ophalen voorkeurstaal:
<?php session_start() ;
include_once("../gns_class/BrowserPropertyUtil.php") ;
$BUtilInstance = MijnNamespace\BrowserPropertyUtil::getInstance() ;
$lang = $BUtilInstance -> getPreferedLanguage() ;
$page = "huidigepagina.php" ;
//$lang in een sessie zetten, deze kan later gewijzigd worden.
?>
De klasse BrowserPropertyUtil:
<?php namespace MijnNamespace ;
class BrowserPropertyUtil{
private static $BUtil ;
private function __construct(){
}
static function getInstance(){
if(!isset(self::$BUtil)){
self :: $BUtil = new BrowserPropertyUtil() ;
}
return self :: $BUtil;
}
static function getPreferedLanguage(){
return substr($_SERVER["HTTP_ACCEPT_LANGUAGE"], 0, 2) ;
}
}
?>
De container:
<div id='container_center' class='column'>
<?php include_once("../gns_class/TextGFacade.php") ;
$textG = new MijnNamespace\TextGFacade() ;
$textG -> printContent($page) ; // hier zal ook de taal als param worden
//meegegeven
?> </div>
De klasse TextBase:
<?php namespace MijnNamespace ;
abstract class TextBase{
function __construct(){
}
abstract protected function printContent($page) ; //taal zal later
//ook meegegeven worden.
}
?>
De klasse TextGFacade:
<?php namespace MijnNamespace ;
include_once ("TextBase.php") ;
include_once("XMLParser.php");
class TextGFacade extends TextBase{
function __construct(){
parent:: __construct() ;
}
public function printContent($page)
{
$XMLParserInstance = XMLParser::GetInstance() ;
$XMLParserInstance->ParseXML_With_WrapperFile($page);
}
}
?>
De klasse XMLParser:
<?php
namespace MijnNamespace;
class XMLParser
{
private static $XMLParser ;
private function __construct(){}
public static function GetInstance()
{
if(!isset(self::$XMLParser))
{
self :: $XMLParser = new XMLParser() ;
}
return self :: $XMLParser ;
}
public static function ParseXMLWithXSL($page){
//phpinfo();
$xml = new \DOMDocument() ;
$xsl = new \DOMDocument() ;
if($page == "index.php"){
$xml -> load('XML/dexmlfile.xml') ;
$xsl -> load('XML/destylesheet.xsl') ;
}
else{
$xml-> load('../XML/dexmlfile.xml') ;
$xsl -> load('../XML/destylesheet.xsl') ;
}
$proc = new \XSLTProcessor() ;
$proc -> importStyleSheet($xsl) ;
echo $proc->transformToXML($xml) ;
}
public static function ParseXML_With_WrapperFile($page){
$file;
if($page == "index.php"){
$file = file_get_contents('XML/dexmlfile.xml') ;
}
else{
$file = file_get_contents'../XML/dexmlfile.xml') ; }
echo($file) ;
}
public static function ParseXML($language, $page, $class_heading2)
{
$xml ;
if($page == "index.php"){
$xml = simplexml_load_file("XML/dexmlfile.xml") ;
}
else{
$xml = simplexml_load_file("../XML/dexmlfile.xml") ;
}
$page_name_fromXML ;
foreach($xml->children() as $pageNode)
{
foreach($pageNode->attributes() as $attribute){
switch($attribute->getName())
{
case "page-name": $page_name_fromXML = $attribute ; break ;
default: $page_name_fromXML = "index.php"; break ;
}
if($page == $page_name_fromXML)
{
foreach($pageNode->children() as $contentNode){
foreach($contentNode->attributes() as $contentattribute){
if($contentattribute == $language){
foreach($contentNode->children() as $contentNodeChild){
self :: TextLayoutHeadings($contentNodeChild, $class_heading2) ;
foreach($contentNodeChild-> children() as $contentNodeTextRule){
foreach($contentNodeTextRule -> children() as $finalChild){
echo($finalChild."<br />") ; } }
}
}
}
}
}
}
}
}
private static function TextLayoutHeadings($node, $class)
{
switch($node->getName())
{
case "heading1" : echo("<h1>".$node."</h1>"); break ;
case "heading2" : echo("<h2 class='".$class."'>".$node."</h2>") ; break ;
case "heading3" : echo("<h3 class='custom_font_1'>".$node."</h3>") ; break;
case "heading4" : echo("<h4>".$node."</h4>") ; break ;
case "heading5" : echo("<h5>".$node."</h5>") ; break ;
case "heading6" : echo("<h6>".$node."</h6>") ; break ;
case "heading7" : echo("<h7>".$node."</h7>") ; break ;
default : echo("<h2>".$node."</h2>") ; break;
}
}
De XSD file (staat nog niet op punt:
<xs:schema xmlns:xs="http://
www.w3.org/2001/XMLSchema" targetNamespace="http://
www.gns.be" xmlns="http://
www.gns.be" elementFormDefault="qualified">
<xs:element name="gns">
<xs:complexType>
<xs:sequence>
<xs:element name="page" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="content" minOccurs="1"maxOccurs="unbounded">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:choice>
<xs:element name="content_text" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element name="content_text_rule" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:choice>
<xs:element name="bold" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="underline" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="subscript" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="superscript" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="link" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="default" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="application" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="heading1" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="heading2" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="heading3" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="heading4" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="heading5" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="heading6" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="heading7" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="unordered_list">
<xs:complexType>
<xs:sequence>
<xs:element name="list_item" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:sequence>
<xs:attribute name="language" type="xs:string" use="required"></xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="page-name" type="xs:string" use="required"></xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Een stukje uit de XML file:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="gns_stylesheet.xsl"?>
<gns
xmlns="http://
www.gns.be"
xmlns:xsi="http://
www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://
www.gns.be dexsdfilenaam.xsd">
<page page-name="index.php">
<content language="nl">
<heading2>Introductie:</heading2>
<content_text>
<content_text_rule>
<default>Tekst NL</default>
</content_text_rule>
<content_text_rule>
<default>Tekst NL.</default>
</content_text_rule>
<content_text_rule>
<default>TekstNL.</default>
</content_text_rule>
<content_text_rule>
<default>Tekst NL.</default>
</content_text_rule>
<content_text_rule></content_text_rule>
<content_text_rule>
<default>Tekst NL.</default>
</content_text_rule>
<content_text_rule>
<default>Tekst NL</default>
</content_text_rule>
<content_text_rule>
<default>Tekst NL.</default>
</content_text_rule>
<content_text_rule>
<default>Tekst NL.</default>
</content_text_rule>
<content_text_rule>
<default>Tekst NL</default>
</content_text_rule>
<content_text_rule>
<default>Tekst NL.</default>
</content_text_rule>
</content_text>
<heading2>Heading 2</heading2>
<content_text>
<content_text_rule>
<default>Tekst NL</default>
</content_text_rule>
<content_text_rule>
<default>Tekst NL.</default>
</content_text_rule>
</content_text>
<heading2>Heading 2</heading2>
<content_text>
<content_text_rule><default>Tekst NL.</default></content_text_rule>
<content_text_rule><default>Tekst NL.</default></content_text_rule>
<content_text_rule><default>Tekst NL.</default></content_text_rule>
</content_text>
<unordered_list>
<list_item>Item</list_item>
<list_item>Item</list_item>
<list_item>Item</list_item>
<list_item>Item</list_item>
</unordered_list>
<unordered_list>
<list_item>Item</list_item>
<list_item>Item</list_item>
</unordered_list>
<content_text>
<content_text_rule><default>Tekst NL</default></content_text_rule></content_text>
</page>
<page page-name="index.php">
<content language="en">
<content_text>
<content_text_rule><default>Tekst EN</default></content_text_rule>
</content_text>
<heading2>Heading 2</heading2>
<content_text>
<content_text_rule>
<default>Tekst EN.</default>
</content_text_rule>
<content_text_rule><default>Tekst ENG</default></content_text_rule>
<content_text_rule><default>Tekst ENG.</default></content_text_rule>
</page>
<page page-name="index.php">
<content language = "fr">
<content_text>
<content_text_rule><default>Tekst FR</default></content_text_rule>
</content_text>
<heading2>Heading 2</heading2>
<content_text>
<content_text_rule><default>Tekst FR</default></content_text_rule>
<content_text_rule><default></content_text>
</page>
Mijn excuses voor het eventuele ongemak bij het lezen van mijn code.
PHP is vrij nieuw voor mij, ik leer op dit moment uit het handboek PHP5.3 van Arjan Burger. Er moet nog héél wat aan refactoring gedaan worden.
Alle nuttige tips en constructieve kritiek zijn welkom.
Met vriendelijke groet,
Michael.