0

バリデーターが検証しようとするのではなく、要素内の html を無視するパターンを作成するにはどうすればよいですか?

<stuff>
   <data>
      this is some text <b>with the odd</b> bit of html<p>and unclosed tags
   </data>
</stuff>

これは有効ではありませんが、次のようなことを試しました

datatypes xs = "http://www.w3.org/2001/XMLSchema-datatypes"
start = stuff

stuff = element stuff
{
   element data { * }
}
4

2 に答える 2

1

非整形式の HTML を含む XML ドキュメントを検証することはできません。非整形式であるため、そのようなドキュメントは XML ドキュメントではないからです。dataしかし、実際に取得している入力が XML である場合は、適切な形式の HTML 要素または適切な形式の XML を許可するように 定義できます。

整形式の XML を許可するのが最も簡単です。「整形式の XML をここに」という意味のパターンを定義します。遭遇した要素はすべて、同じパターンを使用して再帰的に検証されます。

wellformed-xml = (text
                 | element * { wellformed-xml }
                 )*

data次に、そのパターンを使用する要素を定義します。

stuff = element stuff {
            element data { wellformed-xml }
        }

それが単なる HTML であることを本当に保証したい場合は、"*" よりも制限的な名前クラスが必要になります。bipspan、およびを入力しましdivた。必要な他の要素を追加するための演習として残します。

start = stuff
stuff =
  element stuff {
    element data { wellformed-html }
  }

wellformed-html =
  (text
   | element b | div | i | p | span { wellformed-html }
   )*

XHTML 入力もサポートできるようにしたい場合は、名前空間参照を使用する必要があります。繰り返しますが、読者のための演習です。

于 2016-06-03T21:06:13.817 に答える