我正在尝试使用 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/>
如何导入现有的命名空间?