fileref 된 ImageObject에 이전 폴더를 제거하는 './'및 첫 번째 폴더를이XSL : 나는 이전 제거 할
<section xmlns="http://docbook.org/ns/docbook" version="5">
<title>Screenshot</title>
<para xreflabel="New Type" xml:id="manageNewType">
<mediaobject>
<imageobject>
<imagedata fileref="./views/screenshots/manageType1.png" width="100%"/>
</imageobject>
<caption>
<para>New Mode</para>
</caption>
</mediaobject>
</para>
<para xreflabel="Edit Type" xml:id="manageEditType">
<mediaobject>
<imageobject>
<imagedata fileref="./screenshots/manageType2.png" width="100%"/>
</imageobject>
<caption>
<para>Edit Mode</para>
</caption>
</mediaobject>
</para>
</section>
에서
그래서 imageData의에 속한 fileref에 대한 '스크린 샷'라는 이름되지 않은 경우 으로
: 스크린 샷 여기
<para xreflabel="New Type" xml:id="manageNewType">
<mediaobject>
<imageobject>
<imagedata fileref="screenshots/manageType1.png" width="100%"/>
</imageobject>
<caption>
<para>New Mode</para>
</caption>
</mediaobject>
</para>
<para xreflabel="Edit Type" xml:id="manageEditType">
<mediaobject>
<imageobject>
<imagedata fileref="screenshots/manageType2.png" width="100%"/>
</imageobject>
<caption>
<para>Edit Mode</para>
</caption>
</mediaobject>
</para>
</section>
내 현재의 스타일입니다 섹션 ... 어떤 이유로 아무것도하지 않고 할
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="imagedata/@fileref[starts-with(.,'./')
and not(starts-with(.,'./screenshots/'))
]">
<xsl:attribute name="fileref">
<xsl:value-of select="substring-after(substring-after(.,'./'), '/')"/>
</xsl:attribute>
</xsl:template>
<xsl:template match="imagedata/@fileref[starts-with(.,'./screenshots/')]">
<xsl:attribute name="fileref">
<xsl:value-of select="substring-after(.,'./')"/>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
편집 추가의 xmlns = "http://docbook.org/ns/docbook"버전 = "5"를 표시하지 않습니다.
좋은 질문입니다. +1. 아마도 마지막 질문 이후 XML 문서가 변경되었을 것입니다. 완전하고 간단한 솔루션에 대한 내 대답을 참조하십시오. –
이 문제는 재현 할 수 없습니다. –
@Alejandro : 당신이 맞아요, 방금 섹션의 ns를 놓친 것으로 나타났습니다. 그에 따라 내 질문을 편집했습니다. – Ace