XSLT를 사용하여 다른 시스템에서 사용하기 위해 InDesign 관련 XML을 정리하고 있습니다. 텍스트 본문에 중첩 된 태그에서 값을 가져 와서 제거 할 수 있어야합니다.XSLT를 사용하여 요소 값 가져 오기
특히 제목과 줄이 텍스트 본문에 포함됩니다. 나는 이것들을 추출하여 헤더 태그에 넣을 수 있어야한다. 나는 그것을 할 수 있지만, 나는 그것에 몸을 빼앗길 수 없다.
은 여기 내 (간체) XML의 :
<?xml version="1.0" encoding="UTF-8"?>
<k4Export xmlns="http://www.vjoon.com/K4Export/1.4.2">
<publication>
<id>107233722</id>
<name>NGM</name>
<origin>origin</origin>
<issue>
<article>
<textObjects>
<textObject>
<text>
<inlineTag name="Story">
<inlineTag name="body">
<inlineTag name="headline">The Headline</inlineTag> Lorem ipsum dolor sit amet,
consectetur adipiscing elit. <em>Vivamus mollis</em> ligula quis mi
blandit interdum. In rutrum imperdiet suscipit. Fusce interdum,
sem id scelerisque molestie, purus ligula fringilla sapien, nec
auctor velit eros eget felis. Duis eu tellus purus. Donec id viverra
neque.</inlineTag>
<inlineTag name="body">Donec nec nulla neque, sit amet placerat
elit. Nulla pulvinar elit sapien. Donec venenatis, arcu sed
pellentesque ultrices, neque mi sollicitudin elit, nec fermentum
eros nibh aliquam leo. Nam lectus neque, dapibus in scelerisque
in, fermentum nec ipsum.</inlineTag>
<inlineTag name="body">Sed sed <strong>congue</strong> neque. Nulla
nec ipsum vitae lacus consectetur convallis sed et nulla. Integer
posuere viverra felis, at pulvinar risus scelerisque ac. Aliquam a
orci ac est iaculis porta. Duis sollicitudin lectus sit amet velit
condimentum lobortis.
<inlineTag name="byline">-John Doe</inlineTag></inlineTag></inlineTag>
</text>
</textObject>
</textObjects>
</article>
</issue>
</publication>
</k4Export>
그리고 여기에 내가 변환 사용하고있어 XSLT입니다. 헤드 라인과 헤드 라인을 헤더에 넣을 수는 있지만 내용에서 벗어날 수는 없습니다. 나는 XSLT noob이므로 어떤 충고도 부탁드립니다. textObject 요소는 XML 문서 전체에 퍼져 있기 때문에 매우 일반적인 XPath 선택기를 의도적으로 사용하고 있습니다.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:default="http://www.vjoon.com/K4Export/1.4.2"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0"
exclude-result-prefixes="default">
<!-- Output Content -->
<xsl:template match="/">
<html>
<head>
<title>Sample</title>
</head>
<body>
<!-- Headline-->
<xsl:variable name="headlines" select="//default:inlineTag[@name='headline']" />
<xsl:choose>
<xsl:when test="$headlines">
<xsl:for-each select="$headlines">
<h1 class="headline"><xsl:value-of select="node()"/></h1>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<h1 class="headline">Headline Absent</h1>
</xsl:otherwise>
</xsl:choose>
<!-- Bylines -->
<xsl:variable name="bylines" select="//default:inlineTag[@name='byline']" />
<xsl:choose>
<xsl:when test="$bylines">
<xsl:for-each select="$bylines">
<h2 class="byline"><xsl:value-of select="node()"/></h2>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<h2 class="byline">Byline Absent</h2>
</xsl:otherwise>
</xsl:choose>
<div id="content">
<!-- body -->
<xsl:variable name="bodies" select="//default:inlineTag[@name='body']" />
<xsl:choose>
<xsl:when test="$bodies">
<xsl:for-each select="$bodies">
<p><xsl:value-of select="node()"/></p>
</xsl:for-each>
</xsl:when>
</xsl:choose>
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
@ user646151 :이 입력 샘플의 정확한 출력은 어떻게됩니까? –
좋은 질문입니다, +1. 쉽고 분명한 해결책은 내 대답을 참조하십시오. 템플릿을 발견하고 XSLT를 발견하십시오. :) –