2008 4 2008 8월

XSL의 위치 ()에 문제가 ... 또는 그것인가?

오늘 XSL을 만드는 동안 나는이 strage 문제를했다. 그물에 걸쳐 답변을 찾아 보았지만 아무것도 발견 couldnt .... 사실 내 생각! 나는 힘 내 문제가 뭔지, 그래서 어떤 꿈에 보여?

어쨌든! 만약 당신이 나한테 만톤 감사 것입니다 ... 너무 그리고 어떻게든이 페이지에 비행 관리 포스의 힘을하여이 똑같은 문제가 ... 그리고 당신이 실수로 이상한 운명이 페이지에 착륙하고있다면 될거야 언젠가, 당신은이 문제에 직면하는 경우 XSL 개발자, 미래 원인 동안만를 적어 볼까, 그러면 포스가 함께하길하지 않을 수 있습니다.

문제 진술 :
거기에 여러 항목을 가진 두 노드가 어디에,이 XML을 가지고이 두 노드 사이 항목은 1-1 대응 있습니다. 아래 예제에서 노드 <array의 각 항목 name="PLAYURL" /> 노드 <array에 항목 (해당 위치) 관련 name="SITENAME" />

<?xml version="1.0" encoding="utf-8"?>
<myplaylists>
<playlist>
<title>Best of Rest </title>
<array name="SITENAME">
<str>www.musicindiaonline.com</str>
<str>www.dhingana.com</str>
<str>www.raaga.com</str>
<str>www.smashits.com</str>
<str>www.desimusic.com</str>
<str>www.musicplug.in</str>
</array>
<array name="PLAYURL">
<str>http://www.musicindiaonline.com/123/</str>
<str>http://www.dhingana.com/play/123</str>
<str>http://www.raaga.com/123</str>
<str>http://ww.smashits.com/123</str>
<str>http://www.desimusic.com/123</str>
<str>http://www.musicplug.in/123</str>
</array>
</playlist>
</myplaylists>

내가 <array name="SITENAME">로 루프, 그리고 내가 <array name="PLAYURL">에서 관련 항목을 (해당 위치에서)받을하려는 자, 난, 루프를 가지고

당신이 normaly 할을 시도 것은 ...

<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
play from : <a href="{../../array[@name='PLAY']/str[position()]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>

죄송합니다! 이렇게는 안되 실거예요 ... 아!! Surpised ...

이제 아마 시도 이런 게 좋습 ...

<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
<xsl:variable name="pos"> <xsl:value-of select="position()"/></xsl:variable>
play from : <a href="{../../array[@name='PLAY']/str[$pos]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>

그리고 다시 이런 일을 실거예요 ... 이제 당신은 머리를 긁적 당신은 어떤 스타일을 모른다고 생각하는 모든 사람을 만나려하고 도움이 될 수있다 당신은 다른 모든 옵션을 시도 ... 그리고 여전히 작동 실거예요 ... 글쎄! 그게 전부 내게 atleast 어떻게 ...

절망 되네요! 이걸 써봐

<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
<xsl:variable name="pos-int" select="position()" />
play from : <a href="{../../array[@name='PLAY']/str[$
<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
<xsl:variable name="pos-int" select="position()" />
play from : <a href="{../../array[@name='PLAY']/str[$ pos-int ]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>
]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>

어떻게 될지는 나한테 물어 없다. 내가 정당한 이유가 없다 ... 어쩔한다면! 댓글을 떨어뜨리지 마십시오. 꽤 usefull 수도 있습니다. 또! 이 게시물에 대한 더 좋은 제목이있다면, 내 라인을 떨어뜨 할 :)


2008 2,008 8월

XSL에 DOCTYPE 설정

지난 주 나는 클라이언트 progessive HTML / CSS 레이아웃을 만들어 IE6​​, IE7과 FF 3에서 그것을 테스트 완벽하게 정상적으로 보였습니다 ... 전까진 말이야 레이아웃은 manufacting주기 아래 추가했습니다. 그것이 실패했습니다. 페이지 레이아웃 요소는 모든 HTML 레이아웃은 XSL과 XML이 적용 ... 이거 실망을!로 전환되었다 떠돌았!

이 SH ** 고쳐야만 할 때, 월요일 아침에 대비, 지난 주말 OK 잠을 잘 수 없습니다. 그러나 이제는 이러한 가지 상황 (브라우저 만지면, 내말은) 상대의 작은 experince하는 데, 난 그것이 다른 아무것도 할하지만 DOCTYPE해야한다고 생각 했어요 .... 그런데 ...

문제 :
당신의 변화를 명시적으로 기본 DOCTYPE을 포함하므로 당신은 DOCTYPE 제어할 필요하고 레이아웃 토스 잠들어있을 것입니다.

해결 방법 :
XSLT 사양은 choise의 DOCTYPE을 설정 출력 방법을 제공합니다. 또한 저희 UI 개발자를위한, 관심있는 주제가 될 HTML 출력 방법XML 출력 방법 .

글쎄! 당신은 지루해하기 전에, 여기에 수정 프로그램입니다.

예 :, 당신의 HTML 버전에 다음과 같은 DOCTYPE있다면 :. -

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

그런 다음 XSL에 다음이 필요 할 것입니다 : -

<xsl:output method="html" doctype-system="http://www.w3.org/TR/html4/loose.dtd" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" indent="yes" />

그리고 마지막으로! 귀하의 XSLT 출력이 선택한 DOCTYPE을 충성 스러운지 확인 않습니다.


2008 2008년 5월 4일

XSL 안에 포함 XSL

XML / XSL가 domian가 변환한다면, 우리는 (재사용 가능한 제출 예정) 라이브러리 항목을 사용하도록 동적 코드 peice 원하는 경우가 있습니다. 무슨 뜻인지, 아마이 예제의 시나리오는 더욱 분명하게 할 수 있습니다.

당신이 웹사이트를 만들고 (그리고 XML, XSL transfroms 당연히 사용) 및 페이지의 대부분은 코멘트 모듈를 가지려고하고 상상해보세요. 글쎄! 다음 중 당신이 모든 페이지 템플리트 (이 내 말을하지만, 유지 보수 및 재작업 악몽을 가지고 있겠지) 또는 더 나은에이 코드를 복사하거나 붙여넣을, 당신은 (당신의 페이지에 당신이 그것을 원하는 위치까지 멈춘 수 포함시킬 파일을 만듭니다 들) ...
그럼 어떻게 XSL 포함시킬 파일을 생성하고 다른 XSL 파일 안에 그것을 포함합니까? 방법은이 ...

그냥 몇 가지 일을 확실하게하는 방법 ... 여기가 만든 것이 파일의 간단한 목록입니다 ... 여기, 우리 음식이라는 상위 페이지로 과일과 야채에 대한 정보를 포함합니다.

1. food.xml - 변환이 적용됩니다되는 XML 데이터 파일
2. food.xsl - 우리 food.xml를 변환합니다 기본 스타일 파일,
3. inc_fruits.xsl - XSL은 과일 데이터를 렌더링 파일을 포함
4. inc_vegtables.xsl - XSL은 vetetables 데이터를 렌더링 파일을 포함

나는 많은 설명이 있다고 생각하지 말아, 위의 요소의 코드는, 자기 설명합니다 ...

FOOD.XML


<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="food.xsl"?>
<food>
<date>July 2008</date>
<description>All about things we eat everyday</description>
<fruits type="tropical">
<item name="mango" moreinfo="http://www.mango.com">Mango is the king of fruits</item>
<item name="banana" moreinfo="http://www.banana.com">Banana once a day , keeps the doctor away</item>
<item name="orange" moreinfo="http://www.orange.com">Orange is the color and rich in vitamin C</item>
<item name="Papaya" moreinfo="http://www.papaya.com">Papaya - Hot when raw, cold when ripe</item>
</fruits>

<vegetables>
<item name="spinach" moreinfo="http://www.spinach.com">Spinach is full of iron</item>
<item name="asparagus" moreinfo="http://www.asparagus.com">Asparagus contains loads of vitamin D </item>
<item name="fenugreek" moreinfo="http://www.fenugreek.com">Fenugreek is rich in vitamin C</item>
</vegetables>
</food>


FOOD.XSL


<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:include href="inc_fruits.xsl" />
<xsl:include href="inc_vegetables.xsl" />
<xsl:template match="/">
<html>
<head>
<title>Title</title>
</head>
<body>
<h3><xsl:value-of select="/food/description" /></h3>
Modification Date : <xsl:value-of select="/food/date" />
<hr/>
<h5> About Fruits</h5>
<xsl:call-template name="about_fruits"/>

<hr/>
<h5> About Vegetables</h5>
<xsl:call-template name="about_vegetables"/>

<hr/>
</ BODY>
</ HTML>
다 </ xsl : 템플릿>
다 </ xsl : 스타일 시트>


INC_FRUITS.XSL

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="iso-8859-1" />
<xsl:template name="about_fruits">
<xsl:for-each select="/food/fruits/item/@*">
attribute name : <xsl:value-of select="name()"/>
attribute value : <xsl:value-of select="."/> <br />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>


INC_VEGETABLES.XSL

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="iso-8859-1" />
<xsl:template name="about_vegetables">
<xsl:for-each select="/food/vegetables/item/@*">
attribute name : <xsl:value-of select="name()"/>
attribute value : <xsl:value-of select="."/> <br/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

위의 모든 파일이 여기에 (256 다운로드) 다운로드


2008 2008년 4월 4일

XSLT에서 XML 노드 속성 작업

당신이 XML과 XSL을 사용하면 특성과 스타일에 XML 노드의 값을들을 플레이해야 할 때, 그때 당신은 시간을 가로질러 왔을 수도 있습니다. 그들은 이것에 대해 긴 숨이 찬 정보가있는 사이트의 부하이며, 내가 찾은 누구는 짧고 정확한없는 것 ... 이것은 XML / XSL 튜토리얼은 아니지만 컨닝 목록의 일종을 함께 넣어 내 시도 ...

우리가 일하는 것을 예제 XML은 다음과 같습니다 ...

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="food.xsl"?>
<food>
<fruits type="tropical">
<item name="mango" moreinfo="http://www.mango.com">Mango is the king of fruits</item>
<item name="banana" moreinfo="http://www.banana.com">Banana once a day , keeps the doctor away</item>
<item name="orange" moreinfo="http://www.orange.com">Orange is the color and rich in vitamin C</item>
<item name="Papaya" moreinfo="http://www.papaya.com">Papaya - Hot when raw, cold when ripe</item>
</fruits>
</food>

그럼 XSL을 사용하여 Google 위의 XML을 변환 시작하자

예제 1 : 선택된 속성에 값 표시하기

<xsl:value-of select="/food/fruits/item[@name='orange']" /><br />
to get more information about <a href="{/food/fruits/item[@name='orange']/@moreinfo}" target="new" ><xsl:value-of select="/food/fruits/item[@name='orange']/@name" /> </a>

HTML 결과 보일까

Orange is the color and rich in vitamin C,
to get more information about <a href="http://www.orange.com" target="new">


예제 2 :를 통해 반복 및 모든 XML 속성 이름과 값 표시

<xsl:for-each select="/food/fruits/item/@*">
attribute name : <xsl:value-of select="name()"/>,
attribute value : <xsl:value-of select="."/> <br />
</xsl:for-each>

HTML 결과 보일까


attribute name : name, attribute value : mango
attribute name : moreinfo, attribute value : http://www.mango.com
attribute name : name, attribute value : banana
attribute name : moreinfo, attribute value : http://www.banana.com
attribute name : name, attribute value : orange
attribute name : moreinfo, attribute value : http://www.orange.com
attribute name : name, attribute value : Papaya
attribute name : moreinfo, attribute value : http://www.papaya.com


여기에 위의 모든 파일 (249 다운로드) 다운로드



이 공간을보고, 나는 새로운 발견으로이 업데이 트에 반영하겠습니다 ...


NDK 홈 | IT를 표현 | 표현 구개 | 표현 Penmenship | 표현 공포 | 표현 자신