3

以下のようなタグを含む HTML があります。

<div id="SNT">text1</div>
<div id="SNT">text2</div>
<div id="SNT">textbase1<span style='color: #EFFFFF'>text3</span></div>
<div id="SNT">textbase2<span style='color: #EFFFFF'>text4</span></div>

フィールドを無視して、XPath を使用してすべてのタグに含まれるすべてtextsを取得するにはどうすればよいですか?<div>span

すなわち:

text1  
text2  
textbase1text3  
textbase2text4   
4

4 に答える 4

2

あなたは単に使用することができます:

//div/text()

また

div/text()

お役に立てれば。

于 2012-06-10T13:15:33.793 に答える
1

これは、単一の XPath 1.0 式では指定できません。

divまず、関連するすべての要素を選択する必要があります。

//div[@id='SNT']

次に、選択したノードごとにその文字列ノードを取得します

string(.)

XPath 2.0 では、これは単一の式で指定できます

//div[@id='SNT]/string(.)

XSLT ベースの検証:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text"/>

 <xsl:template match="div[@id='SNT']">
     <xsl:copy-of select="string()"/>
========    
 </xsl:template>
</xsl:stylesheet>

この XSLT 1.0 変換が次の XML ドキュメント (単一の最上位要素にラップされた提供された XML フラグメント) に適用される場合:

<t>
    <div id="SNT">text1</div>
    <div id="SNT">text2</div>
    <div id="SNT">textbase1<span style='color: #EFFFFF'>text3</span></div>
    <div id="SNT">textbase2<span style='color: #EFFFFF'>text4</span></div>
</t>

関連するdiv要素が選択 (照合) され、指定されたテンプレートのみによって処理され、string(.)XPath 式が評価され、その結果が出力にコピーされます。

    text1
========    

    text2
========    

    textbase1text3
========    

    textbase2text4
========    

XPath 2.0 式の場合:

<xsl:stylesheet version="2.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text"/>

 <xsl:template match="/">
     <xsl:copy-of select="//div[@id='SNT']/string(.)"/>
 </xsl:template>
</xsl:stylesheet>

この XSLT 2.0 変換が同じ XML ドキュメント (上記) に適用されると、XPath 2.0 式が評価され、結果 (4 つの文字列) が出力にコピーされます

text1 text2 textbase1text3 textbase2text4
于 2012-06-10T14:45:07.060 に答える
0

HTMLファイルに他のコンテンツがなく<div>、通常のHTMLルート要素内にあるコンテンツだけである場合、テキストを抽出するには次のスタイルシートで十分です。

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="text"/>

</xsl:stylesheet>

sのみが必要で<div>、それらの特定のIDのみが必要な場合は、次のコードを使用します。これにより、改行が例のようになります。

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="text"/>

<xsl:template match="//div[@id='SNT']">
    <xsl:copy-of select="node()|text()"/><xsl:text>&#xA;</xsl:text>
</xsl:template>

</xsl:stylesheet>
于 2012-06-10T13:36:41.693 に答える