Използвам asciidoc с бекенда на docbook и се опитвам да предам URL като променлива от asciidoc до docbook, където променливата може да има различни стойности в целия документ. Например, искам потребителите ми да могат да правят нещо като:
# url="http://foo/
== some text
Some para....
# url="http://bar/
== some text
Some para....
Идеята ми беше да използвам блокове за преминаване, за да добавя инструкции за обработка, които могат да бъдат взети в docbook, напр.
pass::[<?my_url http://foo ?>]
== some title
some para...
Това, което не мога да разбера как да направя, е да напиша XSLT, който изразява следното: "намерете предишната инструкция за обработка, наречена my_url
, и използвайте нейното съдържание, за да зададете стойността на променлива"
Следвайки указанията, дадени в http://www.sagehill.net/docbookxsl/ProcessingInstructions.html Опитах да използвам dbhtml
PI, напр.:
<?dbhtml my_url="http://foo.com" ?>
и в моя XSL:
<xsl:template match="ulink[@role='edit_me']">
<xsl:variable name="my_url">
<xsl:call-template name="dbhtml-attribute">
<xsl:with-param name="pis"
select="ancestor-or-self::entry/processing-instruction('dbhtml')"/>
<xsl:with-param name="attribute" select="'my_url'"/>
</xsl:call-template>
</xsl:variable>
GOT: <xsl:value-of select="$my_url" />
</xsl:template>
Но напълно не мога да извлека стойността, която преследвам. Помощта е оценена с благодарност.
Добавен примерен XML
Например вземете този примерен XML документ:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<book lang="en">
<bookinfo>
<title>Title one</title>
</bookinfo>
<?my_url http://foo.com ?>
<preface>
<title><ulink role="edit_me" url="test.asciidoc">Edit me</ulink></title>
</preface>
<?my_url http://bar.com ?>
<chapter id="_title_two">
<title>Title two<ulink role="edit_me" url="test.asciidoc">Edit me</ulink></title>
<simpara>Some text</simpara>
</chapter>
<chapter id="_title_three">
<title>Title three<ulink role="edit_me" url="test.asciidoc">Edit me</ulink></title>
<simpara>More text</simpara>
</chapter>
</book>
Искам да изобразя всяка от edit_me
връзките, като използвам URL адреса, посочен в предходната my_url
инструкция за обработка. Така че първата връзка ще използва foo.com
, докато следващите две ще използват bar.com
.