<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <title>Open SCAP Library: Validation</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">Open SCAP Library </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.1.1 --> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li><a href="files.html"><span>Files</span></a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="summary"> <a href="#typedef-members">Typedefs</a> | <a href="#enum-members">Enumerations</a> | <a href="#func-members">Functions</a> </div> <div class="headertitle"> <div class="title">Validation</div> </div> <div class="ingroups"><a class="el" href="group__COMMON.html">Common</a></div></div><!--header--> <div class="contents"> <p>XML schema based validation of XML representations of SCAP documents. <a href="#details">More...</a></p> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2><a name="typedef-members"></a> Typedefs</h2></td></tr> <tr class="memitem:gac979f1141240cd8d0a762a2be9341965"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac979f1141240cd8d0a762a2be9341965"></a> typedef enum <a class="el" href="group__VALID.html#gae11fc65de255d812d72c1f563146200f">oscap_document_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__VALID.html#gac979f1141240cd8d0a762a2be9341965">oscap_document_type_t</a></td></tr> <tr class="memdesc:gac979f1141240cd8d0a762a2be9341965"><td class="mdescLeft"> </td><td class="mdescRight">SCAP document type identifiers. <br/></td></tr> <tr class="memitem:ga210767f8268bb4c91cd1cbf483a0da72"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga210767f8268bb4c91cd1cbf483a0da72"></a> typedef int(* </td><td class="memItemRight" valign="bottom"><b>xml_reporter</b> )(const char *file, int line, const char *msg, void *arg)</td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2><a name="enum-members"></a> Enumerations</h2></td></tr> <tr class="memitem:gae11fc65de255d812d72c1f563146200f"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="group__VALID.html#gae11fc65de255d812d72c1f563146200f">oscap_document_type</a> { <br/>   <a class="el" href="group__VALID.html#ggae11fc65de255d812d72c1f563146200fafc43196d876e7510c731e9329268b270">OSCAP_DOCUMENT_OVAL_DEFINITIONS</a> = 1, <a class="el" href="group__VALID.html#ggae11fc65de255d812d72c1f563146200fa1beeca5febf1d503ef68b382a515ac0a">OSCAP_DOCUMENT_OVAL_VARIABLES</a>, <a class="el" href="group__VALID.html#ggae11fc65de255d812d72c1f563146200fae8e342ea95744c96444f967671f19fa6">OSCAP_DOCUMENT_OVAL_SYSCHAR</a>, <a class="el" href="group__VALID.html#ggae11fc65de255d812d72c1f563146200faf668682d31530ba654ad6a501ff2c558">OSCAP_DOCUMENT_OVAL_RESULTS</a>, <br/>   <a class="el" href="group__VALID.html#ggae11fc65de255d812d72c1f563146200fac6e0c570f97813e5c7413786bf40d425">OSCAP_DOCUMENT_OVAL_DIRECTIVES</a>, <a class="el" href="group__VALID.html#ggae11fc65de255d812d72c1f563146200fa3f530686b986be0046ea4b043a3c0ade">OSCAP_DOCUMENT_XCCDF</a>, <a class="el" href="group__VALID.html#ggae11fc65de255d812d72c1f563146200faae51c5951377f65c31e676fdd2e7acf0">OSCAP_DOCUMENT_CPE_LANGUAGE</a>, <a class="el" href="group__VALID.html#ggae11fc65de255d812d72c1f563146200fa2a2868aeedeafe930100ee5b7695d75f">OSCAP_DOCUMENT_CPE_DICTIONARY</a>, <br/>   <a class="el" href="group__VALID.html#ggae11fc65de255d812d72c1f563146200fa828334bea80ec94d093251ec7d09c3c5">OSCAP_DOCUMENT_CVE_FEED</a>, <a class="el" href="group__VALID.html#ggae11fc65de255d812d72c1f563146200fa968fb0d69c5c33c3e324b1326a1ca1ee">OSCAP_DOCUMENT_SCE_RESULT</a>, <a class="el" href="group__VALID.html#ggae11fc65de255d812d72c1f563146200faaa595eb3a40fcf7c67106a9f3a92129f">OSCAP_DOCUMENT_SDS</a>, <a class="el" href="group__VALID.html#ggae11fc65de255d812d72c1f563146200fa65908703eeff0a220e1ba25b8e0def7a">OSCAP_DOCUMENT_ARF</a>, <br/>   <a class="el" href="group__VALID.html#ggae11fc65de255d812d72c1f563146200fad98f3b3fe0b102359c31dc20879b2b2a">OSCAP_DOCUMENT_XCCDF_TAILORING</a> <br/> }</td></tr> <tr class="memdesc:gae11fc65de255d812d72c1f563146200f"><td class="mdescLeft"> </td><td class="mdescRight">SCAP document type identifiers. <a href="group__VALID.html#gae11fc65de255d812d72c1f563146200f">More...</a><br/></td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2><a name="func-members"></a> Functions</h2></td></tr> <tr class="memitem:ga5b8f0b33aecd9f772af5be2c31c1037a"><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__VALID.html#ga5b8f0b33aecd9f772af5be2c31c1037a">oscap_document_type_to_string</a> (<a class="el" href="group__VALID.html#gac979f1141240cd8d0a762a2be9341965">oscap_document_type_t</a> type)</td></tr> <tr class="memdesc:ga5b8f0b33aecd9f772af5be2c31c1037a"><td class="mdescLeft"> </td><td class="mdescRight">Convert <a class="el" href="group__VALID.html#gac979f1141240cd8d0a762a2be9341965">oscap_document_type_t</a> constant to human readable (english) representation. <a href="#ga5b8f0b33aecd9f772af5be2c31c1037a"></a><br/></td></tr> <tr class="memitem:gadb305adbb211169cf32a82cb3da0fdc4"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__VALID.html#gadb305adbb211169cf32a82cb3da0fdc4">oscap_validate_document</a> (const char *xmlfile, <a class="el" href="group__VALID.html#gac979f1141240cd8d0a762a2be9341965">oscap_document_type_t</a> doctype, const char *version, xml_reporter reporter, void *arg)</td></tr> <tr class="memdesc:gadb305adbb211169cf32a82cb3da0fdc4"><td class="mdescLeft"> </td><td class="mdescRight">Validate a SCAP document file against a XML schema. <a href="#gadb305adbb211169cf32a82cb3da0fdc4"></a><br/></td></tr> <tr class="memitem:gaa3ecdf745fed7ae87bb96ec13b362788"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__VALID.html#gaa3ecdf745fed7ae87bb96ec13b362788">oscap_schematron_validate_document</a> (const char *xmlfile, <a class="el" href="group__VALID.html#gac979f1141240cd8d0a762a2be9341965">oscap_document_type_t</a> doctype, const char *version, const char *outfile)</td></tr> <tr class="memdesc:gaa3ecdf745fed7ae87bb96ec13b362788"><td class="mdescLeft"> </td><td class="mdescRight">Validate a SCAP document file against schematron rules. <a href="#gaa3ecdf745fed7ae87bb96ec13b362788"></a><br/></td></tr> <tr class="memitem:gab78e5df0e1b42faab2e6eae6af29f72e"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__VALID.html#gab78e5df0e1b42faab2e6eae6af29f72e">oscap_apply_xslt</a> (const char *xmlfile, const char *xsltfile, const char *outfile, const char **params)</td></tr> <tr class="memdesc:gab78e5df0e1b42faab2e6eae6af29f72e"><td class="mdescLeft"> </td><td class="mdescRight">Apply a XSLT stylesheet to a XML file. <a href="#gab78e5df0e1b42faab2e6eae6af29f72e"></a><br/></td></tr> <tr class="memitem:gaf9afe0c57ada2e1e154869ef0de38c6f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf9afe0c57ada2e1e154869ef0de38c6f"></a> const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__VALID.html#gaf9afe0c57ada2e1e154869ef0de38c6f">oscap_path_to_schemas</a> (void)</td></tr> <tr class="memdesc:gaf9afe0c57ada2e1e154869ef0de38c6f"><td class="mdescLeft"> </td><td class="mdescRight">Function returns path used to locate OpenSCAP XML schemas. <br/></td></tr> <tr class="memitem:ga25e09e72f9f3dc658f22dbfc5dcea6ea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga25e09e72f9f3dc658f22dbfc5dcea6ea"></a> const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__VALID.html#ga25e09e72f9f3dc658f22dbfc5dcea6ea">oscap_path_to_schematron</a> (void)</td></tr> <tr class="memdesc:ga25e09e72f9f3dc658f22dbfc5dcea6ea"><td class="mdescLeft"> </td><td class="mdescRight">Function returns path used to locate OpenSCAP Schematron files. <br/></td></tr> <tr class="memitem:ga29b5ed02c5ca73f3bda847af54875da8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga29b5ed02c5ca73f3bda847af54875da8"></a> const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__VALID.html#ga29b5ed02c5ca73f3bda847af54875da8">oscap_path_to_cpe</a> (void)</td></tr> <tr class="memdesc:ga29b5ed02c5ca73f3bda847af54875da8"><td class="mdescLeft"> </td><td class="mdescRight">Function returns path used to locate OpenSCAP Default CPE files. <br/></td></tr> <tr class="memitem:ga1a27165df5c0839233b787a13fa3037f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga1a27165df5c0839233b787a13fa3037f"></a> int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__VALID.html#ga1a27165df5c0839233b787a13fa3037f">oscap_determine_document_type</a> (const char *document, <a class="el" href="group__VALID.html#gac979f1141240cd8d0a762a2be9341965">oscap_document_type_t</a> *doc_type)</td></tr> <tr class="memdesc:ga1a27165df5c0839233b787a13fa3037f"><td class="mdescLeft"> </td><td class="mdescRight">Determine document type. <br/></td></tr> </table> <hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <p>XML schema based validation of XML representations of SCAP documents. </p> <hr/><h2>Enumeration Type Documentation</h2> <a class="anchor" id="gae11fc65de255d812d72c1f563146200f"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="group__VALID.html#gae11fc65de255d812d72c1f563146200f">oscap_document_type</a></td> </tr> </table> </div><div class="memdoc"> <p>SCAP document type identifiers. </p> <dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><em><a class="anchor" id="ggae11fc65de255d812d72c1f563146200fafc43196d876e7510c731e9329268b270"></a>OSCAP_DOCUMENT_OVAL_DEFINITIONS</em> </td><td> <p>OVAL Definitions file. </p> </td></tr> <tr><td valign="top"><em><a class="anchor" id="ggae11fc65de255d812d72c1f563146200fa1beeca5febf1d503ef68b382a515ac0a"></a>OSCAP_DOCUMENT_OVAL_VARIABLES</em> </td><td> <p>OVAL Variables. </p> </td></tr> <tr><td valign="top"><em><a class="anchor" id="ggae11fc65de255d812d72c1f563146200fae8e342ea95744c96444f967671f19fa6"></a>OSCAP_DOCUMENT_OVAL_SYSCHAR</em> </td><td> <p>OVAL system characteristics file. </p> </td></tr> <tr><td valign="top"><em><a class="anchor" id="ggae11fc65de255d812d72c1f563146200faf668682d31530ba654ad6a501ff2c558"></a>OSCAP_DOCUMENT_OVAL_RESULTS</em> </td><td> <p>OVAL results file. </p> </td></tr> <tr><td valign="top"><em><a class="anchor" id="ggae11fc65de255d812d72c1f563146200fac6e0c570f97813e5c7413786bf40d425"></a>OSCAP_DOCUMENT_OVAL_DIRECTIVES</em> </td><td> <p>OVAL directives file. </p> </td></tr> <tr><td valign="top"><em><a class="anchor" id="ggae11fc65de255d812d72c1f563146200fa3f530686b986be0046ea4b043a3c0ade"></a>OSCAP_DOCUMENT_XCCDF</em> </td><td> <p>XCCDF benchmark file. </p> </td></tr> <tr><td valign="top"><em><a class="anchor" id="ggae11fc65de255d812d72c1f563146200faae51c5951377f65c31e676fdd2e7acf0"></a>OSCAP_DOCUMENT_CPE_LANGUAGE</em> </td><td> <p>CPE language file. </p> </td></tr> <tr><td valign="top"><em><a class="anchor" id="ggae11fc65de255d812d72c1f563146200fa2a2868aeedeafe930100ee5b7695d75f"></a>OSCAP_DOCUMENT_CPE_DICTIONARY</em> </td><td> <p>CPE dictionary file. </p> </td></tr> <tr><td valign="top"><em><a class="anchor" id="ggae11fc65de255d812d72c1f563146200fa828334bea80ec94d093251ec7d09c3c5"></a>OSCAP_DOCUMENT_CVE_FEED</em> </td><td> <p>CVE NVD feed. </p> </td></tr> <tr><td valign="top"><em><a class="anchor" id="ggae11fc65de255d812d72c1f563146200fa968fb0d69c5c33c3e324b1326a1ca1ee"></a>OSCAP_DOCUMENT_SCE_RESULT</em> </td><td> <p>SCE result file. </p> </td></tr> <tr><td valign="top"><em><a class="anchor" id="ggae11fc65de255d812d72c1f563146200faaa595eb3a40fcf7c67106a9f3a92129f"></a>OSCAP_DOCUMENT_SDS</em> </td><td> <p>Source Data Stream file. </p> </td></tr> <tr><td valign="top"><em><a class="anchor" id="ggae11fc65de255d812d72c1f563146200fa65908703eeff0a220e1ba25b8e0def7a"></a>OSCAP_DOCUMENT_ARF</em> </td><td> <p>Result Data Stream file. </p> </td></tr> <tr><td valign="top"><em><a class="anchor" id="ggae11fc65de255d812d72c1f563146200fad98f3b3fe0b102359c31dc20879b2b2a"></a>OSCAP_DOCUMENT_XCCDF_TAILORING</em> </td><td> <p>XCCDF tailoring file. </p> </td></tr> </table> </dd> </dl> </div> </div> <hr/><h2>Function Documentation</h2> <a class="anchor" id="gab78e5df0e1b42faab2e6eae6af29f72e"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int oscap_apply_xslt </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>xmlfile</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>xsltfile</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>outfile</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char ** </td> <td class="paramname"><em>params</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Apply a XSLT stylesheet to a XML file. </p> <p>If xsltfile is not an absolute path, the file will be searched relatively to a path specified by the OSCAP_XSLT_PATH environment variable. If the variable does not exist a default path is used (usually something like $PREFIX/share/openscap/schemas).</p> <dl class="params"><dt>Parameters:</dt><dd> <table class="params"> <tr><td class="paramname">xmlfile</td><td>File to be transformed. </td></tr> <tr><td class="paramname">xsltfile</td><td>XSLT file </td></tr> <tr><td class="paramname">outfile</td><td>Result file shall be written here (NULL for stdout). </td></tr> <tr><td class="paramname">params</td><td>list of key-value pairs to pass to the stylesheet. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns:</dt><dd>the number of bytes written or -1 in case of failure </dd></dl> </div> </div> <a class="anchor" id="ga5b8f0b33aecd9f772af5be2c31c1037a"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* oscap_document_type_to_string </td> <td>(</td> <td class="paramtype"><a class="el" href="group__VALID.html#gac979f1141240cd8d0a762a2be9341965">oscap_document_type_t</a> </td> <td class="paramname"><em>type</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Convert <a class="el" href="group__VALID.html#gac979f1141240cd8d0a762a2be9341965">oscap_document_type_t</a> constant to human readable (english) representation. </p> <dl class="params"><dt>Parameters:</dt><dd> <table class="params"> <tr><td class="paramname">type</td><td>OpenSCAP Document Type </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns:</dt><dd>English string describing document type. </dd></dl> <dl class="retval"><dt>Return values:</dt><dd> <table class="retval"> <tr><td class="paramname">Returned</td><td>value might be pointer to static memory and must not be modified. </td></tr> <tr><td class="paramname">NULL</td><td>in case of unrecognized document type </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="gaa3ecdf745fed7ae87bb96ec13b362788"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int oscap_schematron_validate_document </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>xmlfile</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__VALID.html#gac979f1141240cd8d0a762a2be9341965">oscap_document_type_t</a> </td> <td class="paramname"><em>doctype</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>version</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>outfile</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Validate a SCAP document file against schematron rules. </p> <p>The rules are searched relative to path specified by the OSCAP_SCHEMA_PATH environment variable. If the variable does not exist a default path is used (usually something like $PREFIX/share/openscap/schemas).</p> <dl class="params"><dt>Parameters:</dt><dd> <table class="params"> <tr><td class="paramname">xmlfile</td><td>File to be validated. </td></tr> <tr><td class="paramname">doctype</td><td>Document type represented by the file. </td></tr> <tr><td class="paramname">version</td><td>Version of the document, use NULL for library's default. </td></tr> <tr><td class="paramname">outfile</td><td>Report from schematron validation is written into the outfile. If NULL, stdou will be used. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns:</dt><dd>0 on pass; <0 error; >0 fail </dd></dl> </div> </div> <a class="anchor" id="gadb305adbb211169cf32a82cb3da0fdc4"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int oscap_validate_document </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>xmlfile</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__VALID.html#gac979f1141240cd8d0a762a2be9341965">oscap_document_type_t</a> </td> <td class="paramname"><em>doctype</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>version</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">xml_reporter </td> <td class="paramname"><em>reporter</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>arg</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Validate a SCAP document file against a XML schema. </p> <p>Schemas are searched relative to path specified by the OSCAP_SCHEMA_PATH environment variable. If the variable does not exist a default path is used (usually something like $PREFIX/share/openscap/schemas).</p> <p>Directory structure must adhere $SCHEMA_PATH/$STANDARD/$VERSION/$SCHEMAFILE.xsd structure, where $STANDARD is oval, xccdf, etc., and $VERSION is a version of the standard.</p> <dl class="params"><dt>Parameters:</dt><dd> <table class="params"> <tr><td class="paramname">xmlfile</td><td>File to be validated. </td></tr> <tr><td class="paramname">doctype</td><td>Document type represented by the file. </td></tr> <tr><td class="paramname">version</td><td>Version of the document, use NULL for library's default. </td></tr> <tr><td class="paramname">reporter</td><td>A reporter to by notified of encountered issues. Can be NULL, if a binary document validates / does not validate answer is satisfactonary. </td></tr> <tr><td class="paramname">arg</td><td>Argument for the reporter. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns:</dt><dd>0 on pass; -1 error; 1 fail </dd></dl> </div> </div> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.1.1 </small></address> </body> </html>