Add tags

Add tags to the following comment
XSLTでも何とかできた。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<xsl:stylesheet version="2.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:fn="http://www.w3.org/2005/xpath-functions"
  >

  <xsl:output method="text" />

  <xsl:variable name="gpl" as="xs:string"
    select="unparsed-text('http://www.gnu.org/licenses/gpl.txt')" />

  <xsl:variable name="mid" as="element()">
    <xsl:element name="root">
      <xsl:for-each select="fn:tokenize($gpl, '\n')">
        <xsl:element name="line">
          <xsl:attribute name="no">
            <xsl:value-of select="position()" />
          </xsl:attribute>
          <xsl:for-each select="fn:tokenize(., '\W+')">
            <xsl:element name="word">
              <xsl:value-of select="fn:lower-case(.)" />
            </xsl:element>
          </xsl:for-each>
        </xsl:element>
      </xsl:for-each>
    </xsl:element>
  </xsl:variable>

  <xsl:template match="/" >
    <xsl:for-each select="fn:distinct-values($mid//word/text())">
      <xsl:sort data-type="text" />
      <xsl:variable name="t" as="xs:string" select="." />
      <xsl:value-of select="." />
      <xsl:text> ... </xsl:text>
      <xsl:value-of select="fn:string-join($mid//line[word=$t]/@no, ',')" />
      <xsl:text>&#xA;</xsl:text>
    </xsl:for-each>
  </xsl:template>

</xsl:stylesheet>

Add tags

The input will be splited to tags with space.

Index

Feed

Other

Link

Pathtraq

loading...