PHP | Función XMLReader setRelaxNGSchema()

La función XMLReader::setRelaxNGSchema() es una función incorporada en PHP que se usa para establecer el nombre de archivo o URI para que RelaxNG Schema lo use para la validación.

Sintaxis:

bool XMLReader::setRelaxNGSchema( string $filename )

Parámetros: esta función acepta un solo parámetro $filename que contiene el nombre de archivo o URI que apunta a un 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::setRelaxNGSchema() en PHP:

    Ejemplo 1:

  • data.xml (El archivo XML a validar)

    <?xml version="1.0"?>
    <body>
        <div>
            <h1>Heading 1</h1>
            <h2>Heading 2</h2>
        </div>
        <div>
            <h1>Heading 3</h1>
            <h2>Heading 4</h2>
        </div>
    </body>
  • rule.rng (Las reglas a seguir por el archivo XML)

    <element name="body" 
      <zeroOrMore>
        <element name="div">
          <element name="h1">
            <text/>
          </element>
          <element name="h2">
            <text/>
          </element>
        </element>
      </zeroOrMore>
    </element>
  • index.php (Script PHP para ejecutar el validador)

    <?php
      
    // Create a new XMLReader instance
    $XMLReader = new XMLReader();
      
    // Open the XML file
    $XMLReader->open('data.xml');
      
    // Load the rule file
    $XMLReader->setRelaxNGSchema('rule.rng');
      
    // Iterate through the XML nodes
    // and validate each node
    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!

Programa 2:

  • datos.xml

    <?xml version="1.0"?>
    <body>
        <div>
            <!--Remove Heading 1
              to violate rule-->
            <h2>Heading 2</h2>
        </div>
        <div>
            <h1>Heading 3</h1>
            <h2>Heading 4</h2>
        </div>
    </body>
  • regla.rng

    <element name="body"
      <zeroOrMore>
        <element name="div">
          <element name="h1">
            <text/>
          </element>
          <element name="h2">
            <text/>
          </element>
        </element>
      </zeroOrMore>
    </element>
  • índice.php

    <?php
      
    // Create a new XMLReader instance
    $XMLReader = new XMLReader();
      
    // Open the XML file
    $XMLReader->open('data.xml');
      
    // Load the rule file
    $XMLReader->setRelaxNGSchema('rule.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!
    This document is not valid!

Referencia: https://www.php.net/manual/en/xmlreader.setrelaxngschema.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 *