PHP で xml スキーマを動的に作成しようとしていますが、名前空間に問題があります。私がやりたいことは、関数が xsd:elements を返し、それらを xsd:sequence ノードに追加することです。
関数の一時 DOMDocument に xsd:element ノードを作成します。xsd 名前空間「xmlns:xsd="http://www.w3.org/2001/XMLSchema」を指定する必要があります。指定しない場合、「xsd:」ビットは次に、一時ドキュメントから必要なノードを抽出し、importNode() を使用して既存の DOMDocument にコピーします。問題は、要素を作成する関数から返されるすべてのノードに完全な xmlns 文字列が添付されていることです。
初期DOMDocument
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="UserType">
<xsd:sequence>
// add elements here
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
フィールドを収集するために使用する一時DOMDocument
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element type="xsd:string" name="Field1"/>
<xsd:element type="xsd:string" name="Field2"/>
<xsd:element type="xsd:string" name="Field3"/>
</xsd:schema>
私が得るもの
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"/>
<xsd:complexType name="UserType"/>
<xsd:sequence/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" type="xsd:string" name="Field1"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" type="xsd:string" name="Field2"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" type="xsd:string" name="Field3"/>
</xsd:sequence/>
</xsd:complexType/>
</xsd:schema/>
既存の名前空間にインポートするにはどうすればよいですか?