0

タグ内の空白を保持することは可能ですか?

XPathNodeIterator を使用して、XPathDocument 内の XML ノード (XHTML コンテンツを含む) にアクセスしています。

ノード内の一部のタグは「厳密な」XHTML ではありません (これはツールの最終出力で許可されます)。一部のノードには、末尾のスペースのないイメージ タグが含まれています。

<img src="filename.png" alt="description"/>

結果のノードを保存すると、末尾のスペースで適切にフォーマットされます。

<img src="filename.png" alt="description" />

タグ内のスペースを保持してノードの内容を取得することは可能ですか (この場合はスペースがありません)? PreserveWhitespace に似たものを考えていました。

使用したコードの簡単なサンプル

xmlDoc = New XPathDocument(fileIn, xmlSpace.Preserve)
xmlNav = xmlDoc.CreateNavigator()
Dim xmlNode As XPathNodeIterator
Dim ns As XmlNamespaceManager = new XmlNamespaceManager(xmlNav.NameTable)

xmlNode = xmlNav.Select("/export/contents[target[@translate='True']]")
While xmlNode.MoveNext()
  target = xmlNode.Current.selectSingleNode("target").InnerXML
  ' ... '
End While

いくつかの背景: Marc が指摘したように、タグ内の意味のない空白 (またはそのタグの順序) に関して、結果の XML の意味に違いはありません。

私が遭遇する主な問題は、新しいコンテンツと古いコンテンツの両方を処理する CMS システムからデータが取得されることです。コンテンツ作成プロセスは最近 XML/XHTML に移行したばかりなので、システムにはまだ厳密でない古い XHTML コンテンツが残っています。

使用されている QA ツールは依然として主にテキスト ベースであり、HTML 用に構築されており、別の部門によって実行されています (QA プロセスは調整/更新する必要があります)。これが、今のところ、タグを可能な限り元の形式に近づけたい理由です。


一時的な回避策として、XML を .NET で解析することによって導入された「相違点」を検索して修正するために、(新しいバージョンと以前のバージョンのノードを比較する) いくつかの正規表現を追加しました。

4

2 に答える 2

1

これら2つ(重要でない空白)を区別するパーサー/ xmlツール/など(少なくとも.NETでは)を認識していません。意味の点では、それらは同一です - それらが以下と同一であるのと同じです:

<img alt="description" src="filename.png" />
于 2009-03-25T09:52:43.037 に答える
0

ファイルを正規表現 s/[ ][/][>]/[/][>]/g で後処理します。

XHTML を生成している場合、<br /> を <br/> に置き換えると、一部のダウンレベル ブラウザーが機能しなくなる可能性があることに注意してください。<br /> は、不明な属性「/」を持つ HTML タグと見なされ、無視されます。<br/> は不明な HTML タグ "br/" として認識されます。

于 2009-06-16T16:35:20.647 に答える