Как передать переменную оболочки в xsl с помощью xsltproc? - PullRequest
0 голосов
/ 16 октября 2018

Я хочу передать переменную name=$(echo "$t" | cut -f 1 -d '.') из сценария оболочки в следующий xsl в качестве переменной $ name:

 <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:dcterms="http://purl.org/dc/terms/">

<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />

    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

<xsl:template match="dc:record">
    <xsl:copy copy-namespaces="no">
        <xsl:apply-templates select="@* | *" />
        <xsl:param name="name"/>
         <dc:relation><xsl:value-of select="$name"/></dc:relation>    
    </xsl:copy>
</xsl:template>

</xsl:stylesheet>

Можно ли отправить переменную через xsltproc -o ie1.xml ../../transform.xsl ie1.xml и как это сделать?

1 Ответ

0 голосов
/ 16 октября 2018

Определите xsl:param на верхнем уровне:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/">

<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
<xsl:param name="name" />
...

Затем вызовите xsltproc с параметром --stringparam

xsltproc --stringparam name "$name" -o ie1.xml ../../transform.xsl ie1.xml

Вот и все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...