X-Git-Url: https://git.ladys.computer/Shushe/blobdiff_plain/d452a043ac32c66e0b881f383d0575a95f3d059f..225d2e9c3d8c3abe4816c97206dae0955ace5f44:/lib/expandmetadata.xslt?ds=inline diff --git a/lib/expandmetadata.xslt b/lib/expandmetadata.xslt index e75fe23..3d46c82 100644 --- a/lib/expandmetadata.xslt +++ b/lib/expandmetadata.xslt @@ -13,7 +13,6 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one --> <transform xmlns="http://www.w3.org/1999/XSL/Transform" - xmlns:dct="http://purl.org/dc/terms/" xmlns:exsl="http://exslt.org/common" xmlns:nie="http://www.semanticdesktop.org/ontologies/2007/01/19/nie#" xmlns:nfo="http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#" @@ -24,8 +23,8 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one extension-element-prefixes="exsl" version="1.0" > - <variable name="builddir" select="//*[@rdf:about='about:shushe?builddir']/@nfo:fileUrl"/> - <variable name="files" select="/rdf:RDF/nfo:LocalFileDataObject[not(nie:interpretedAs/nfo:Folder)]"/> + <variable name="builddir" select="//书社vocab:BuildDirectory/@nfo:fileUrl"/> + <variable name="files" select="//书社vocab:SourceFile|//书社vocab:IncludeFile"/> <template name="书社:process-dependencies"> <param name="processed"/> <param name="unprocessed"/> @@ -66,7 +65,7 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one </when> </choose> </variable> - <for-each select="document(concat($builddir, $subdir, @nfo:fileName), .)//书社:link[@xlink:show='embed']"> + <for-each select="document(concat($builddir, $subdir, @书社vocab:path), .)//书社:link[@xlink:show='embed']"> <if test="exsl:node-set($old)/书社:dependency-root[string()=string(current()/@xlink:href)]"> <书社:recursive-dependency> <value-of select="$parent"/> @@ -97,34 +96,51 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one </otherwise> </choose> </template> - <template match="rdf:RDF/nfo:LocalFileDataObject[not(nie:interpretedAs/nfo:Folder or nie:interpretedAs/nfo:PlainTextDocument)]" priority="1"> + <template match="//书社vocab:SourceFile[not(nie:interpretedAs/nfo:PlainTextDocument)]" priority="1"> <copy> - <apply-templates select="@*|node()"/> - <if test="starts-with(@rdf:about, 'about:shushe?source=')"> - <dct:hasFormat> - <nfo:LocalFileDataObject dct:creator="urn:fdc:ladys.computer:20231231:Shu1She4" nfo:fileName="{substring-after(@rdf:about, 'about:shushe?source=')}"/> - </dct:hasFormat> - </if> + <apply-templates select="@*"/> + <attribute name="书社vocab:destination"> + <value-of select="@书社vocab:path"/> + </attribute> + <apply-templates select="node()"/> </copy> </template> - <template match="rdf:RDF/nfo:LocalFileDataObject[nie:interpretedAs/nfo:PlainTextDocument]" priority="1"> - <variable name="parsed" select="document(concat($builddir, '/sources/', @nfo:fileName), .)"/> + <template match="//书社vocab:SourceFile[nie:interpretedAs/nfo:PlainTextDocument]" priority="1"> + <variable name="parsed" select="document(concat($builddir, '/sources/', @书社vocab:path), .)"/> <variable name="destination-delim" select="concat('/', $parsed/*/@书社:destination, '/')"/> <variable name="destination"> <choose> - <when test="not(starts-with(@rdf:about, 'about:shushe?source='))"/> <when test="not(contains($destination-delim, '//') or contains($destination-delim, '/./') or contains($destination-delim, '/../'))"> <value-of select="$parsed/*/@书社:destination"/> </when> <otherwise> - <value-of select="substring-after(@rdf:about, 'about:shushe?source=')"/> + <value-of select="@书社vocab:path"/> </otherwise> </choose> </variable> <variable name="dependencies-fragment"> <apply-templates select="." mode="书社:dependencies"/> </variable> - <variable name="dependencies" select="exsl:node-set($dependencies)"/> + <variable name="dependencies" select="exsl:node-set($dependencies-fragment)"/> + <copy> + <apply-templates select="@*"/> + <attribute name="书社vocab:destination"> + <value-of select="$destination"/> + </attribute> + <apply-templates select="node()"/> + <for-each select="$dependencies/书社:dependency"> + <书社vocab:hasDependencyOn rdf:resource="{.}"/> + </for-each> + <for-each select="$dependencies/书社:recursive-dependency"> + <书社vocab:hasRecursiveDependencyOn rdf:resource="{.}"/> + </for-each> + </copy> + </template> + <template match="//书社vocab:IncludeFile[nie:interpretedAs/nfo:PlainTextDocument]" priority="1"> + <variable name="dependencies-fragment"> + <apply-templates select="." mode="书社:dependencies"/> + </variable> + <variable name="dependencies" select="exsl:node-set($dependencies-fragment)"/> <copy> <apply-templates select="@*|node()"/> <for-each select="$dependencies/书社:dependency"> @@ -133,20 +149,46 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one <for-each select="$dependencies/书社:recursive-dependency"> <书社vocab:hasRecursiveDependencyOn rdf:resource="{.}"/> </for-each> - <if test="$destination!=''"> - <dct:hasFormat> - <nfo:LocalFileDataObject dct:creator="urn:fdc:ladys.computer:20231231:Shu1She4" nfo:fileName="{$destination}"> - </nfo:LocalFileDataObject> - </dct:hasFormat> - </if> </copy> </template> + <template match="/"> + <variable name="result-fragment"> + <apply-templates/> + </variable> + <variable name="result" select="exsl:node-set($result-fragment)"/> + <copy-of select="$result/*"/> + <exsl:document href="dependencies" method="text" encoding="UTF-8"> + <for-each select="$result/rdf:RDF/*[nie:interpretedAs/nfo:PlainTextDocument]"> + <value-of select="@rdf:about"/> + <text>
</text> + <for-each select="书社vocab:hasRecursiveDependencyOn/@rdf:resource"> + <text>	</text> + <text>-</text> + <value-of select="."/> + <text>
</text> + </for-each> + <for-each select="书社vocab:hasDependencyOn/@rdf:resource"> + <text>	</text> + <value-of select="."/> + <text>
</text> + </for-each> + </for-each> + </exsl:document> + <exsl:document href="destinations" method="text" encoding="UTF-8"> + <for-each select="$result//书社vocab:SourceFile"> + <value-of select="@rdf:about"/> + <text>|</text> + <value-of select="@书社vocab:destination"/> + <text>
</text> + </for-each> + </exsl:document> + </template> <template match="@*|node()"> <copy> <apply-templates select="@*|node()"/> </copy> </template> - <template match="nfo:LocalFileDataObject" mode="书社:dependencies"> + <template match="书社vocab:SourceFile|书社vocab:IncludeFile" mode="书社:dependencies"> <if test="nie:interpretedAs/nfo:PlainTextDocument"> <call-template name="书社:process-dependencies"> <with-param name="unprocessed"> @@ -157,4 +199,5 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one </call-template> </if> </template> + <output method="xml" encoding="UTF-8"/> </transform>