home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / boot / i386 / root / usr / share / YaST2 / modules / XML.ycp < prev    next >
Text File  |  2006-11-29  |  4KB  |  136 lines

  1. /**
  2.  * File:    modules/XML.ycp
  3.  * Package:    XML
  4.  * Summary:    XML routines
  5.  * Authors:    Anas Nashif <nashif@suse.de>
  6.  *
  7.  * $Id: XML.ycp 26970 2006-01-11 16:31:13Z mvidner $
  8.  */
  9.  
  10. {
  11.  
  12.     module "XML";
  13.  
  14.     // Sections in XML file that should be treated as CDATA when saving
  15.     global list cdataSections = [];
  16.  
  17.     // How to call a list entry in the XML output
  18.     global map listEntries = $[];
  19.  
  20.     // The system ID, or the DTD URI
  21.     global string systemID = "";
  22.  
  23.     // root element of the XML file
  24.     global string rootElement = "";
  25.  
  26.     // Global Namespace xmlns=...
  27.     global string nameSpace = "http://www.suse.com/1.0/yast2ns";
  28.  
  29.     // Type name space xmlns:config for YCP data (http://www.suse.com/1.0/configns)
  30.     global string typeNamespace = "http://www.suse.com/1.0/configns";
  31.  
  32.     global map docs = $[];
  33.  
  34.  
  35.  
  36.     /**
  37.      * define a new doc type with custom settings, if not defined, global settings will
  38.      * be used.
  39.      * @param symbol Document type identifier
  40.      * @param map  Document type Settings
  41.      * @return void
  42.      */
  43.     global define void xmlCreateDoc(symbol doc, map docSettings)
  44.     ``{
  45.     map current_settings = $[
  46.                  "cdataSections":docSettings["cdataSections"]:cdataSections,
  47.                  "systemID":docSettings["systemID"]:systemID,
  48.                  "rootElement":docSettings["rootElement"]:rootElement,
  49.                  "listEntries": docSettings["listEntries"]:listEntries
  50.     ];
  51.     if (docSettings["typeNamespace"]:""!= "")
  52.     {
  53.         current_settings["typeNamespace"] = docSettings["typeNamespace"]:"";
  54.     }
  55.  
  56.     if (docSettings["nameSpace"]:""!= "")
  57.     {
  58.         current_settings["nameSpace"] = docSettings["nameSpace"]:"";
  59.     }
  60.     docs[doc] = current_settings;
  61.     return;
  62.     }
  63.  
  64.     /**
  65.      * YCPToXMLFile()
  66.      * Write YCP data into formated XML file
  67.      * @param symbol Document type identifier
  68.      * @param contents  a map with YCP data
  69.      * @param outputPath the path of the XML file
  70.      * @return boolean true on sucess
  71.      */
  72.     global define boolean YCPToXMLFile(symbol docType, map contents, string outputPath) ``{
  73.     if (!haskey(docs, docType))
  74.     {
  75.         y2error("doc type %1 undecalred...", docType);
  76.         return false;
  77.     }
  78.     map docSettings = docs[docType]:$[];
  79.     docSettings["fileName"] = outputPath;
  80.     y2debug("Write(.xml, %1, %2)", docSettings, contents);
  81.     boolean ret = (boolean) SCR::Execute(.xml, docSettings, contents);
  82.     return ret;
  83.     }
  84.  
  85.  
  86.  
  87.     /** Write YCP data into formated XML string
  88.      *  @param symbol Document type identifier
  89.      *  @param contents  a map with YCP data
  90.      *  @return string String with XML data
  91.      */
  92.     global define string YCPToXMLString(symbol docType, map contents) ``{
  93.     if (!haskey(docs, docType))
  94.         return nil;
  95.  
  96.     map docSettings = docs[docType]:$[];
  97.     docSettings["fileName"] = "dummy";
  98.     any ret = SCR::Execute(.xml.string, docSettings, contents);
  99.         if (is(ret, string))
  100.         return (string)ret;
  101.         else
  102.             return "";
  103.     }
  104.  
  105.     /**
  106.      * Read XML file into YCP
  107.      * @param xmlFile XML file name to read
  108.      * @return Map with YCP data
  109.      */
  110.     global define map<string, any> XMLToYCPFile( string xmlFile) ``{
  111.     if (SCR::Read(.target.size, xmlFile) > 0)
  112.     {
  113.         y2milestone("Reading %1", xmlFile);
  114.         map<string, any> out = (map<string, any>) SCR::Read(.xml, xmlFile);
  115.         y2debug("XML Agent output: %1", out);
  116.         return out;
  117.     }
  118.     else
  119.     {
  120.         y2warning("XML file %1 (%2) not found", xmlFile, SCR::Read(.target.size, xmlFile));
  121.         return $[];
  122.     }
  123.     }
  124.  
  125.     /**
  126.      * The error string from the xml parser.
  127.      * It should be used when the agent did not return content.
  128.      * A reset happens before a new XML parsing starts.
  129.      * @return parser error
  130.      */
  131.     global define string XMLError() ``{
  132.         return (string)SCR::Read(.xml.error_message);
  133.     }
  134.  
  135. }
  136.