2017-04-26 5 views
1

私はXMLWriterを使ってXMLを書いています。私が使用してみましたPHP正しい名前空間とスキーマの場所を持つXMLを書く

<foo xmlns="https://www.example.com" id="1" name="test" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://www.example.com/myschema.xsd" /> 

:のような、のschemaLocation:私は必要なのXSIとXSIを追加することです。しかし、

$w=new XMLWriter(); 
$w->openMemory(); 
$w->startDocument('1.0','UTF-8'); 
$w->startElementNS(null, "foo", "https://www.example.com"); 
$w->writeAttribute("id", 1); 
$w->writeAttribute("name", "test"); 
$w->endDocument(); 
return $w->outputMemory(true); 

:私は

<foo xmlns="https://www.example.com" id="1" name="test" /> 

を作成することができましたこのコード:

$w->writeAttributeNS("xmlns","xsi", "http://www.w3.org/2001/XMLSchema-instance", "http://www.w3.org/2001/XMLSchema-instance"); 

しかし、私は結局w iith:

<foo xmlns="https://www.example.com" id="1" name="test" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xmlns="http://www.w3.org/2001/XMLSchema-instance" /> 

これは有効でもなく、必要なものでもありません。

答えて

2

writeAttributeNSの代わりにwriteAttributeを使用しました。

$w->writeAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"); 
$w->writeAttribute("xsi:schemaLocation", "https://www.example.com/myschema.xsd"); 
関連する問題