PHP | Función XMLReader setRelaxNGSchemaSource()

La función XMLReader::setRelaxNGSchemaSource() es una función incorporada en PHP que se usa para configurar los datos que contienen un esquema RelaxNG para usarlos para la validación. La función setRelaxNGSchemaSource() es diferente de la función setRelaxNGSchema() ya que la primera acepta la regla como una variable de string, mientras que la función posterior acepta la regla como un archivo .rng.

Sintaxis:

bool XMLReader::setRelaxNGSchemaSource( string $source )

Parámetros: esta función acepta un solo parámetro $fuente que contiene la string que contiene el esquema RelaxNG.

Valor de retorno: esta función devuelve VERDADERO en caso de éxito o FALSO en caso de error.

Los siguientes ejemplos ilustran la función XMLReader::setRelaxNGSchemaSource() en PHP:

Ejemplo 1:

  • datos.xml

    <?xml version="1.0"?>
    <body>
        <div>
            <h1>GeeksForGeeks</h1>
            <p>Portal for Geeks</p>
        </div>
        <div>
            <h1>Heading 3</h1>
            <p>Heading 4</p>
        </div>
    </body>
  • índice.php

    <?php
      
    // Create a new XMLReader instance
    $XMLReader = new XMLReader();
      
    // Open the XML file
    $XMLReader->open('data.xml');
      
    // Create rule as a string
    $RNG = "<element name=\"body\"
    xmlns=\"http://relaxng.org/ns/structure/1.0\">
    <zeroOrMore>
      <element name=\"div\">
        <element name=\"h1\">
          <text/>
        </element>
        <element name=\"p\">
          <text/>
        </element>
      </element>
    </zeroOrMore>
    </element>";
      
    // Load the rule
    $XMLReader->setRelaxNGSchemaSource($RNG);
      
    // Iterate through the XML nodes
    while ($XMLReader->read()) {
        if ($XMLReader->nodeType == XMLREADER::ELEMENT) {
      
            // Check if XML follows the relaxNG rule
            if ($XMLReader->isValid()) {
                echo "This document is valid!<br>";
            }
      
        }
    }
    ?>
  • Producción:
    This document is valid!
    This document is valid!
    This document is valid!
    This document is valid!
    This document is valid!
    This document is valid!
    This document is valid!

Ejemplo 2:

  • datos.xml

    <?xml version="1.0"?>
    <body>
        <div>
            <!--Create empty div element
               to violate rule-->
        </div>
        <div>
            <h1>Heading 3</h1>
            <h2>Heading 4</h2>
        </div>
    </body>
  • índice.php

    <?php
      
    // Create a new XMLReader instance
    $XMLReader = new XMLReader();
      
    // Open the XML file
    $XMLReader->open('data.xml');
      
    // Create rule as a string
    $RNG = "<element name=\"body\"
    xmlns=\"http://relaxng.org/ns/structure/1.0\">
    <zeroOrMore>
      <element name=\"div\">
        <element name=\"h1\">
          <text/>
        </element>
        <element name=\"h2\">
          <text/>
        </element>
      </element>
    </zeroOrMore>
    </element>";
      
    // Load the rule
    $XMLReader->setRelaxNGSchemaSource($RNG);
      
    // Iterate through the XML nodes
    while ($XMLReader->read()) {
        if ($XMLReader->nodeType == XMLREADER::ELEMENT) {
      
            // Check if XML follows the relaxNG rule
            if (!$XMLReader->isValid()) {
                echo "This document is not valid!<br>";
            }
      
        }
    }
    ?>
  • Producción:
    This document is not valid!
    This document is not valid!
    This document is not valid!

Referencia: https://www.php.net/manual/en/xmlreader.setrelaxngschemasource.php

Publicación traducida automáticamente

Artículo escrito por gurrrung y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *