問題: XHTML リストを処理して XML 出力を生成するスクリプトを生成できました。
問題は、順序付きリストがある場合、XSLT はどのように見えるべきかということでした。
ありがとう@Sbof
次の XML を生成する必要があります。
<ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/ul">
<CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Character Style 1">
<Content>abc</Content>
<Br/>
<Content>xyz</Content>
<Br/>
<Content>abc</Content>
<Br/>
<Content>xyzabc</Content>
<Br/>
</CharacterStyleRange>
</ParagraphStyleRange>
<ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/ol level 1">
<CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Character Style 1">
<Content>xyz</Content>
<Br/>
</CharacterStyleRange>
</ParagraphStyleRange>
<ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/ol level 2">
<CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Character Style 1">
<Content>abc</Content>
<Br/>
</CharacterStyleRange>
</ParagraphStyleRange>
次のような XHTML (内容は異なりますが、同じことを行います) があります。
<?xml version="1.0" encoding="utf-8" ?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<ol>
<li>abc</li>
<li>xyz</li>
<li>abc</li>
<li>xyzabc</li>
<li>xyz<ol>
<li>abc</li>
</ol>
</li>
<li>xyzxyz</li>
<li>abc</li>
<ol>
<li>xyz</li>
</ol>
<li>next level</li>
</ol>
</body>
</html>
これは、XHTML を横切る XSLT のスニペットです。
<xsl:template match="xhtml:ol/xhtml:li[not(*)]">
<xsl:call-template name="para-style-range">
<xsl:with-param name="style-name">article%3aol Level 1</xsl:with-param>
</xsl:call-template>
<xsl:if test ="xhtml:ol/xhtml:li[*]|
xhtml:ul/xhtml:li[*]">
<xsl:apply-templates select="xhtml:ol/xhtml:li[*]|
xhtml:ul/xhtml:li[*]" />
</xsl:if>
</xsl:template>
これは、スクリプトを使用して得た結果です。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<idPkg:Story xmlns:idPkg="http://ns.adobe.com/AdobeInDesign/idml/1.0/packaging" DOMVersion="7.5">
<Story Self="ucb" AppliedTOCStyle="n" TrackChanges="false" StoryTitle="$ID/" AppliedNamedGrid="n">
<StoryPreference OpticalMarginAlignment="false" OpticalMarginSize="12" FrameType="TextFrameType" StoryOrientation="Horizontal" StoryDirection="LeftToRightDirection"/>
<InCopyExportOption IncludeGraphicProxies="true" IncludeAllResources="false"/>
<ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/ul">
<CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Character Style 1">
<Content>abc</Content>
<Br/>
<Content>xyz</Content>
<Br/>
<Content>abc</Content>
<Br/>
<Content>xyzabc</Content>
<Br/>
</CharacterStyleRange>
</ParagraphStyleRange>
<ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/ol level 1">
<CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Character Style 1">
<Content>xyz</Content>
<Br/>
</CharacterStyleRange>
</ParagraphStyleRange>
<ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/ol level 2">
<CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Character Style 1">
<Content>abc</Content>
<Br/>
</CharacterStyleRange>
</ParagraphStyleRange>
<ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/ol level 1">
<CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Character Style 1">
<Content>xyzxyz</Content>
<Br/>
<Content>abc</Content>
<Br/>
</CharacterStyleRange>
</ParagraphStyleRange>
<ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/ol level 3">
<CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Character Style 1">
<Content>xyz</Content>
<Br/>
</CharacterStyleRange>
</ParagraphStyleRange>
<ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/ol level 1">
<CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Character Style 1">
<Content>next level</Content>
<Br/>
</CharacterStyleRange>
</ParagraphStyleRange>
</Story>
</idPkg:Story>
段落の属性値を取得するために切り取られた XSLT:
<xsl:template name="para-style-range">
<!-- The name of the paragraph style in InDesign -->
<xsl:param name="style-name"/>
<xsl:param name ="isTable" />
<!-- A string of text that will precede the paragraph's actual content (ex: 'by ')-->
<xsl:param name="prefix-content" select="''"/>
<ParagraphStyleRange>
<xsl:attribute name="AppliedParagraphStyle">
<xsl:value-of select="concat('ParagraphStyle/', $style-name)"/>
</xsl:attribute>
<xsl:if test="$prefix-content != ''">
<CharacterStyleRange>
<Content><xsl:value-of select="$prefix-content"/></Content>
</CharacterStyleRange>
</xsl:if>
<xsl:apply-templates select="text()|*" mode="character-style-range"/>
<xsl:choose>
<xsl:when test ="$isTable = 'true'">
<!--Dont do any thing here-->
</xsl:when>
<xsl:otherwise>
<Br/>
</xsl:otherwise>
</xsl:choose>
</ParagraphStyleRange>
</xsl:template>
コードについてまだ混乱している人や、理解するのに助けが必要な人を助けるために、さらにスクリプトを提供できるかどうか教えてください.