
XMLWriter::writeElementNs 함수를 사용하여 namespace prefix를 지정하는 방법은 다음과 같습니다.
- namespace prefix를 지정하기 위해서는 startElementNs 함수의 두 번째 인자로 namespace prefix를 지정하면 됩니다. 예를 들어, startElementNs('xsi', 'http://www.w3.org/2001/XMLSchema-instance')를 사용하면 namespace prefix 'xsi'를 지정할 수 있습니다.
- writeAttributeNs 함수의 첫 번째 인자로 namespace prefix를 지정하면 됩니다. 예를 들어, writeAttributeNs('xsi', 'http://www.w3.org/2001/XMLSchema-instance', 'schemaLocation', 'schema.xsd')를 사용하면 xsi:schemaLocation을 생성할 수 있습니다.
- endElementNs 함수의 첫 번째 인자로 namespace prefix를 지정하면 됩니다. 예를 들어, endElementNs('xsi', 'http://www.w3.org/2001/XMLSchema-instance')를 사용하면 namespace prefix 'xsi'를 지정할 수 있습니다.
위 코드에서 문제가 발생한 이유는 startElementNs 함수의 두 번째 인자로 namespace prefix를 지정하지 않았기 때문입니다. namespace prefix를 지정하지 않으면 namespace prefix가 자동으로 생성되지만, xsi:schemaLocation을 생성하기 위해서는 namespace prefix 'xsi'를 지정해야 합니다.
따라서, 다음과 같이 코드를 수정하면 namespace prefix 'xsi'를 지정하여 xsi:schemaLocation을 생성할 수 있습니다.
#hostingforum.kr
php
$xmlWriter = new XMLWriter();
$xmlWriter->openURI('php://output');
$xmlWriter->startDocument('1.0', 'UTF-8');
$xmlWriter->startElementNs('xsi', 'http://www.w3.org/2001/XMLSchema-instance', 'schema');
$xmlWriter->writeAttributeNs('xsi', 'http://www.w3.org/2001/XMLSchema-instance', 'schemaLocation', 'schema.xsd');
$xmlWriter->endElementNs('xsi', 'http://www.w3.org/2001/XMLSchema-instance', 'schema');
$xmlWriter->endDocument();
$xmlWriter->flush();
위 코드에서는 namespace prefix 'xsi'를 지정하여 xsi:schemaLocation을 생성할 수 있습니다.
2025-03-21 11:19