2016-07-05 2 views
0

XSLT 1.0을 사용하여 XML 데이터 출력을 HTML로 변환합니다. Adobe InDesign에서 데이터를 내보내고 사용자 컴퓨터의 이미지 위치에 대한 절대 링크를 생성합니다. 그러나 최종 HTML 파일은 HTML 기반 전자 메일 시스템에 사용됩니다. 이미지에 대한 절대 링크는 상대 링크로 변환되어야합니다. 웹 기반 이미지 파일의 절대 링크를 특정 상대 링크로 변환 할 수 있습니까?XSLT를 사용하여 이미지 경로 변경

는 XML 이미지 요소는 다음과 같이 표시됩니다

<generic_image href="file:///MacProjects/Workflow/New%20Sample%20Data/Email_test_7-5/Surfaces/Images/Combo_logo_LO.png"></generic_image> 

원하는 HTML 이미지 출력은 다음과 같아야합니다

내 XSL 템플릿은 다음과 같습니다
<img class="image" src="Images/Combo_logo_LO.png" style="max-width: 80%;"> 

:

<xsl:template match="generic_image"><img class="image" src="{@href}" style="max-width: 80%;" /></xsl:template> 

데이터에서 이미지 이름 만 가져 와서 적절한 상대 경로를 만들려면 어떻게해야합니까?

참고로 절대 이미지는 사용자에 따라 다를 수 있으므로 표시된 것과 다를 수 있습니다. Mac 또는 Windows 컴퓨터에서 가져올 수도 있습니다.

+0

봐. – Tomalak

답변

1

substring-after 기능과 결합 된 재귀 템플릿을 사용할 수 있습니다. 밑에있는 아이디어는 "/"다음에 나오는 문자열을 추출하는 것입니다.

<xsl:template match="generic_image"> 
 
     <xsl:call-template name="getFileName"> 
 
      <xsl:with-param name="url"> 
 
       <xsl:value-of select="@href"/> 
 
      </xsl:with-param> 
 
     </xsl:call-template> 
 
    </xsl:template> 
 
    
 
    <xsl:template name="getFileName"> 
 
     <xsl:param name="url"/> 
 
     <xsl:choose> 
 
      <xsl:when test="contains($url, '/')"> 
 
       <xsl:call-template name="getFileName"> 
 
        <xsl:with-param name="url"> 
 
         <xsl:value-of select="substring-after($url, '/')"/> 
 
        </xsl:with-param> 
 
       </xsl:call-template> 
 
      </xsl:when> 
 
      <xsl:otherwise> 
 
       <img class="image" src="{$url}" style="max-width: 80%;" /> 
 
      </xsl:otherwise> 
 
     </xsl:choose> 
 
    </xsl:template>
"XSLT 1.0 문자열 대체 템플릿"에 대한

+0

감사합니다. 우리는 그것을 밖으로 확인하고 알려 드리겠습니다., –

+0

2cts 생각. css에서 일반 img 태그를 타겟팅 할 수 있으므로 img 태그에 클래스가 필요하지 않을 수 있습니다. img 태그에 다른 스타일을 적용하고 싶지 않은 경우. – Loic

+0

마지막으로 테스트 할 기회가 있었지만 완벽하게 작동합니다! 감사 –

관련 문제