From: Lady <redacted> Date: Sun, 4 Feb 2024 21:54:35 +0000 (-0500) Subject: Don’t add attributes to non·elements in parser X-Git-Tag: 0.6.0~3 X-Git-Url: https://git.ladys.computer/Shushe/commitdiff_plain/7408a0a14e34cdfe3000275e36015abdff9ab631 Don’t add attributes to non·elements in parser Check to see if it is an element first with `self::*`. --- diff --git a/lib/catalog2parser.xslt b/lib/catalog2parser.xslt index ad38990..7791570 100644 --- a/lib/catalog2parser.xslt +++ b/lib/catalog2parser.xslt @@ -88,23 +88,30 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one <xslt:param name="media-type"/> <xslt:param name="result" select="/.."/> <xslt:for-each select="$result/node()"> - <xslt:copy> - <xslt:if test="string($id)!=''"> - <xslt:attribute name="书社:parsed-by"> - <xslt:value-of select="$id"/> - <xslt:if test="@书社:parsed-by"> - <xslt:text> </xslt:text> - <xslt:value-of select="@书社:parsed-by"/> + <xslt:choose> + <xslt:when test="self::*"> + <xslt:copy> + <xslt:if test="string($id)!=''"> + <xslt:attribute name="书社:parsed-by"> + <xslt:value-of select="$id"/> + <xslt:if test="@书社:parsed-by"> + <xslt:text> </xslt:text> + <xslt:value-of select="@书社:parsed-by"/> + </xslt:if> + </xslt:attribute> </xslt:if> - </xslt:attribute> - </xslt:if> - <xslt:if test="string($media-type)!=''"> - <xslt:attribute name="书社:media-type"> - <xslt:value-of select="$media-type"/> - </xslt:attribute> - </xslt:if> - <xslt:copy-of select="@*[namespace-uri()!='urn:fdc:ladys.computer:20231231:Shu1She4' or local-name()!='parsed-by' and local-name()!='media-type']|node()"/> - </xslt:copy> + <xslt:if test="string($media-type)!=''"> + <xslt:attribute name="书社:media-type"> + <xslt:value-of select="$media-type"/> + </xslt:attribute> + </xslt:if> + <xslt:copy-of select="@*[namespace-uri()!='urn:fdc:ladys.computer:20231231:Shu1She4' or local-name()!='parsed-by' and local-name()!='media-type']|node()"/> + </xslt:copy> + </xslt:when> + <xslt:otherwise> + <xslt:copy-of select="."/> + </xslt:otherwise> + </xslt:choose> </xslt:for-each> </xslt:template> <xslt:template match="/">