1

Oがこれらの2つの同等の(少なくともそれらが想定されている)XMLスキーマを持っていると仮定します。実際のXMLは、最終的にC#によって解析されます。子要素ではなく実際の属性として属性を取得するので、2番目の方法は「より正確」だと思います。

<?xml version="1.0" encoding="ISO-8859-1"?>
<switch>
  <switch_name>switch1</switch_name>
  <software_version>1</software_version>
  <vendor>Cisco</vendor>
  <ip_address>1.1.1.1</ipaddress>
  <linecard>
    <model_type>12345</model_type>
 <fcport>
 <slot> 1</slot>
 <port> 1</port>
 <speed>4</speed>
 </fcport>

  </linecard>
</switch>

<switch>
 <switch name="switch1" version="1" vendor="Cisco" ip_address="1.1.1.1">
     <linecard model="12345">
  <fcport slot="1" port="1" speed="4">
</fcport>
<linecard>
</switch>
</xml>
4

3 に答える 3

2

エンティティのプロパティに要素を使用するか属性を使用するかを選択する場合、XML でデータを表現する「正しい」方法はありません。あなたに合ったものを選んでください。

一般に、要素は最終的にサブ要素を持つ可能性があるため、より自由になります。つまり、プロパティが属性のコンマ区切り値として表されるある種のリストである場合、非常に非 XML に見えます。

補足: 「XML スキーマ」は通常、別の意味です。XML の構造化スキーマ...「XML でのデータの表現」と呼ばれるものがあります。

于 2012-11-16T03:21:31.923 に答える
2

どちらも厳密に「正しい」というわけではありません。どちらもあなたの例ではうまくいきます。どちらもルールを破りません。

とはいえ、データは属性ではなく子要素内に配置する必要があるという点で、これについてはW3Schoolsに同意すると思います。特に IP アドレスのようなものは、属性ではなく子要素であるべきデータのように感じます。自動生成 ID など、メタデータに通常使用する属性。

これは、後で拡張を考慮する場合に特に当てはまります。たとえば、複数の IP を関連付ける場合はどうすればよいでしょうか? 子要素では別の要素を追加できますが、属性では追加ごとに新しい属性名 (ip1、ip2、ip3...) を考え出す必要があります。

于 2012-11-16T03:21:54.030 に答える
0

要素と属性のどちらかを選択する方法に関する古典的な記事は次のとおりです。

http://xml.coverpages.org/elementsAndAttrs.html

ページの最後に、ジョン・コーワンが私を引用していることに注意してください。「初心者は常にこの質問をします。経験の浅い人は情熱的に意見を述べます。専門家は正しい答えはないと言います」。

于 2012-11-16T08:55:05.810 に答える