New paste Repaste Download
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text" encoding="UTF-8"/>
  <!-- Match each top-level package -->
  <xsl:template match="/">
    <xsl:for-each select="//sect1[@id]">
      <xsl:variable name="id" select="@id"/>
      <xsl:variable name="pkgdir" select="title"/>
      <xsl:variable name="pkgname" select="substring-before($pkgdir, '-')"/>
      <xsl:variable name="pkgver" select="substring-after($pkgdir, '-')"/>
      <xsl:variable name="md5full" select=".//para[contains(., 'MD5')]/text()"/>
      <xsl:variable name="md5" select="normalize-space(substring-after($md5full, 'MD5 sum: '))"/>
      <xsl:variable name="build" select=".//screen[not(@role)]/userinput"/>
      <xsl:variable name="install" select=".//screen[@role='root']/userinput"/>
      <!-- Capture full HTTP URL -->
      <xsl:variable name="pkgurl" select=".//ulink[contains(@url, 'http')]/@url"/>
    <!-- Extract filename, e.g., xfwm4-4.18.tar.bz2 -->
      <xsl:variable name="tarball" select="substring-after($pkgurl, '/')"/>
      <!-- Get the tarball filename from the last slash -->
      <!-- extract the last part of the URL path -->
      <xsl:variable name="filename" select="substring-after($pkgurl, substring-before($pkgurl, concat('/', substring-after($pkgurl, 'https://'))))"/>
    <!-- Extract version from tarball name -->
    <!-- This grabs what’s between the last '-' and the file extension -->
      <xsl:variable name="basename" select="substring-before($filename, '.tar')"/>
      <xsl:variable name="version" select="substring-after($basename, '-')"/>
      <xsl:variable name="required" select=".//para[@role='required']//xref/@linkend"/>
      <xsl:variable name="recommended" select=".//para[@role='recommended']//xref/@linkend"/>
      <xsl:variable name="optional" select=".//para[@role='optional']//xref/@linkend"/>
      <xsl:text>pkgdir=[</xsl:text><xsl:value-of select="$pkgdir"/><xsl:text>]&#10;</xsl:text>
      <xsl:text>pkgname=[</xsl:text><xsl:value-of select="$pkgname"/><xsl:text>]&#10;</xsl:text>
      <xsl:text>pkgver=[</xsl:text><xsl:value-of select="$pkgver"/><xsl:text>]&#10;</xsl:text>
      <xsl:text>pkgrel=[1]&#10;</xsl:text>
      <xsl:text>zarchive=[false]&#10;&#10;</xsl:text>
      <xsl:text>pkgurl=[</xsl:text><xsl:value-of select="$pkgurl"/><xsl:text>]&#10;</xsl:text>
      <xsl:text>md5sum=[</xsl:text><xsl:value-of select="normalize-space($md5)"/><xsl:text>]&#10;&#10;</xsl:text>
      <xsl:text>preconfig=[]&#10;&#10;</xsl:text>
      <xsl:text>prepare=[]&#10;</xsl:text>
      <xsl:text>build=[</xsl:text>
      <xsl:for-each select="$build">
        <xsl:value-of select="normalize-space(.)"/>
        <xsl:if test="position() != last()"><xsl:text>; </xsl:text></xsl:if>
      </xsl:for-each>
      <xsl:text>]&#10;&#10;</xsl:text>
      <xsl:text>check=[]&#10;&#10;</xsl:text>
      <xsl:text>install=[</xsl:text>
      <xsl:for-each select="$install">
        <xsl:value-of select="normalize-space(.)"/>
        <xsl:if test="position() != last()"><xsl:text>; </xsl:text></xsl:if>
      </xsl:for-each>
      <xsl:text>]&#10;&#10;</xsl:text>
      <xsl:text>&#10;# Optional execution order&#10;</xsl:text>
      <xsl:text>post=[]&#10;&#10;</xsl:text>
      <xsl:text>postconfig=[]&#10;</xsl:text>
      <xsl:if test="$required">
        <xsl:text>DEPEND=(</xsl:text>
        <xsl:for-each select="$required">
          <xsl:value-of select="."/>
          <xsl:if test="position() != last()"> </xsl:if>
        </xsl:for-each>
        <xsl:text>)&#10;</xsl:text>
      </xsl:if>
      <xsl:if test="$recommended">
        <xsl:text>recommended=(</xsl:text>
        <xsl:for-each select="$recommended">
          <xsl:value-of select="."/>
          <xsl:if test="position() != last()"> </xsl:if>
        </xsl:for-each>
        <xsl:text>)&#10;</xsl:text>
      </xsl:if>
      <xsl:if test="$optional">
        <xsl:text>optional=(</xsl:text>
        <xsl:for-each select="$optional">
          <xsl:value-of select="."/>
          <xsl:if test="position() != last()"> </xsl:if>
        </xsl:for-each>
        <xsl:text>)&#10;</xsl:text>
      </xsl:if>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>
Filename: gen_zbc_v2.xsl. Size: 4kb. View raw, , hex, or download this file.

This paste expires on 2025-08-01 19:56:28.969088. Pasted through web.