ガイドの一部を理解しようとしていますが、次の説明でロジックを本当に失いました。
最初のコード:リンク
今ガイド:
2 つの文書が類似した名前を持つ可能性がある場合、XML で問題が発生します。動物の xml ドキュメントと動物の所有者の別の xml ドキュメントがある場合、名前ノードで競合が発生する可能性があります。各動物と所有者には名前ノードがあり、それらを区別するためのメソッドが必要です。SimpleXMLIterator は、名前空間を管理するためのいくつかのメソッドを提供します。これらには、この章の冒頭に記載されているものが含まれます。以下のスクリプトは、使用されている xml 文字列への小さな変更を示し、名前空間の使用方法と、SimpleXMLIterator 内でそれらを利用する方法を示しています。
これはコードが与えられる前の部分でしたが、これはコードの後に与えられる部分です:
上記のスクリプトでは、2 番目の名前ノードの XML への追加ではなく、ルートで名前空間を宣言しました。名前空間を識別し、通常の動物名と混同しないように、これには spec: プレフィックスがプレフィックスとして付けられます。SimpleXMLIterator::registerXPathNamespace() メソッドを使用すると、ドキュメントの名前空間のプレフィックスが正常になります。名前空間を取得するには、SimpleXMLIterator::getDocNamespaces() メソッドを使用して、ドキュメント内で宣言されているすべての名前空間の名前を取得します。SimpleXMLIterator::getNamespaces() メソッドも使用できました。SimpleXMLIterator::getDocNamespaces() メソッドは、ドキュメント自体で実際に宣言されている名前空間のみを取得します。
問題:
問題は、著者が正しく理解しているとは思わないことです。誰かがこのコードを別の言葉で説明できる場合は、私のロジックが理解できなかったコードの弱点に名前を付けます。
- The Tag (spec:name) // XML コード。
- $sxi-> registerXPathNamespace('spec', 'http://www.exampe.org/species-title'); //このメソッドと 2 つのパラメーター。
- $result = $sxi->xpath('//spec:name'); //パラメータを持つこのメソッド。
- $sxi->getDocNamespaces('animal') // foreach ループで。
誰かが私が言及したそれらの部分に焦点を当てて、別の言葉を試してください。ありがとう、そして良い一日を。