0

私の情報源は次のとおりです。

<content>
  <caption>text 1</caption>
  <element1>Notepad is a basic text-editing program and it's most commonly used to view or edit text files. A text <bold>file</bold> is a <a>file</a> type typically identified by the .txt file name extension.</element1>
  <section1>
     <element2>Notepad is a basic text-editing program and it's most commonly used to view or edit text files. A text file is a file type typically identified by the .txt file name extension.</element2>
   </section1>
 </content>

子(文字要素)とテキストの両方を持つ要素(任意の要素である可能性があります)、およびテキストのみを持つ要素の一意のIDを抽出して作成しようとしています。<bold>要素と<a>要素を分離しないでください。

  <caption id="id1">Text 1</caption>
  <element1 id="id2">Notepad is a basic text-editing program and it's most commonly used to view or edit text files. A text <bold>file</bold> is a <a>file</a> type typically identified by the .txt file name extension.</element1>
  <element2 id="id3">Notepad....</element2>

どんなアイデアでも大歓迎です...

4

1 に答える 1

0

階層を保持するか、説明した要素のフラットリストを出力するかはよくわかりません。次の例では、記述された要素を単純にフラット リストとして抽出します (ただし、その内容は保持されます)。idは XSLT プロセッサによって生成されます。

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  exclude-result-prefixes="xs">

<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="*[not(*) and text()[normalize-space()]] | *[* and text()[normalize-space()]]">
  <xsl:copy>
    <xsl:attribute name="id" select="generate-id()"/>
    <xsl:apply-templates select="@* , node()" mode="copy"/>
  </xsl:copy>
</xsl:template>

<xsl:template match="*" mode="copy">
  <xsl:copy>
    <xsl:apply-templates select="@* , node()" mode="#current"/>
  </xsl:copy>
</xsl:template>

</xsl:stylesheet>

入力サンプルに適用すると、Saxon 9 出力

<?xml version="1.0" encoding="UTF-8"?>
<caption id="d1e2">text 1</caption>
<element1 id="d1e4">Notepad is a basic text-editing program and it's most commonly used to view or edit text files. A text <bold>file</bold> is a <a>file</a> type typically identified by the .txt file name extension.</element1>
<element2 id="d1e13">Notepad is a basic text-editing program and it's most commonly used to view or edit text files. A text file is a file type typically identified by the .txt file name extension.</element2>
于 2013-06-06T09:33:46.980 に答える