• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • DOMImplementation::createDocumentType()

    (PHP 5, PHP 7)

    Creates an empty DOMDocumentType object

    说明

    publicDOMImplementation::createDocumentType([string $qualifiedName= NULL[,string $publicId= NULL[,string $systemId= NULL]]]): DOMDocumentType

    Creates an empty DOMDocumentType object. Entity declarations and notations are not made available. Entity reference expansions and default attribute additions do not occur.

    参数

    $qualifiedName

    The qualified name of the document type to create.

    $publicId

    The external subset public identifier.

    $systemId

    The external subset system identifier.

    返回值

    A new DOMDocumentType node with itsownerDocumentset to NULL.

    错误/异常

    DOM_NAMESPACE_ERR

    Raised if there is an error with the namespace, as determined by$qualifiedName.

    此方法可以被静态调用,但会抛出一个E_STRICT错误。

    范例

    Example #1 Creating a document with an attached DTD

    <?php
    // Creates an instance of the DOMImplementation class
    $imp = new DOMImplementation;
    // Creates a DOMDocumentType instance
    $dtd = $imp->createDocumentType('graph', '', 'graph.dtd');
    // Creates a DOMDocument instance
    $dom = $imp->createDocument("", "", $dtd);
    // Set other properties
    $dom->encoding = 'UTF-8';
    $dom->standalone = false;
    // Create an empty element
    $element = $dom->createElement('graph');
    // Append the element
    $dom->appendChild($element);
    // Retrieve and print the document
    echo $dom->saveXML();
    ?>
    

    以上例程会输出:

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <!DOCTYPE graph SYSTEM "graph.dtd">
    <graph/>
    

    参见

    • DOMImplementation::createDocument() Creates a DOMDocument object of the specified type with its document element
    I had problems to use a DTD from a file. It needed to be resolved relatively and it contained characters that made DomDocument failed to resolve the file.
    Encoding and an absolute filename did not help much. So I used the data:// streamwrapper ( http://php.net/manual/en/wrappers.data.php ) as a work-around:
    <?php
    // relative or absolute filename
    $path = '...';
    // convert file contents into a filename
    $data = file_get_contents($path);
    $systemId = 'data://text/plain;base64,'.base64_encode($data);
    // ...
    // Creates a DOMDocumentType instance
    $dtd = $aImp->createDocumentType('qualified name', '', $systemId);
    ?>
    Works like a charm.