����
�A��

XML�f�[�^�̖��ߍ��݂Ƒ��ݎQ���FXSLT�X�^�C���V�[�g�������u���i���p��2�j

PC�p�\�� �֘A���
Share
Tweet
LINE
Hatena

�O��́u�X�^�C���V�[�g�����W���[���������v�ł́A���W���[�������ꂽ�����̃X�^�C���V�[�g����荞�ޕ��@���l���܂����B���āA�X�^�C���V�[�g�����łȂ��AXML�f�[�^�������̃t�@�C����������ƕ֗��ł��B�f�[�^�x�[�X���畡����XML�f�[�^��ǂݍ���Ō���������A�K�v�ȃf�[�^�݂̂�I��Œ��o���邱�Ƃ��ł���΁AXML�f�[�^�̑��쐫�͂���Ɍ��シ�邱�Ƃł��傤�B����́A������XML�f�[�^�𑀍삷����@�ƁA���ݎQ�Ƌ@�\���g���ĕK�v�ȃf�[�^�݂̂𒊏o������@��������܂��B

������XML�f�[�^��g�ݍ��킹�ď�������

�@XSLT�v���Z�b�T�̊�{�I�ȏ����̗���́A�^����ꂽ�P���XML�f�[�^�ɃX�^�C���V�[�g��K�p���č\���ϊ����s���Ƃ������̂ł��B�������}�[�W�����̂悤�ɁA������XML�f�[�^�������������Ƃ���������̂ł��B�Ⴆ�Ή��}�̂悤�ɁA���C����XML�f�[�^�Ƀf�B�e�[���E�t�@�C���i�ڍ׏������ƒt�@�C���j�̓��e������ɑg�ݍ��߂���֗��ł��B

}1@XMLf[^gݍ
�}1�@������XML�f�[�^��g�ݍ���

�@��e�ʂ�XML�f�[�^���쐬����̂ł͂Ȃ��A�}1�̂悤�ɍׂ��������‚��̃t�@�C���ɐ؂蕪���A������g�ݍ��킹�Ďg���A�f�[�^�̊Ǘ����������e�ՂɂȂ�܂��B���́A������”\�ɂ��Ă����̂�XSLT��document�֐��ł��Bdocument�֐��́A�ŏ��ɗ^�����郁�C����XML�f�[�^�ȊO��XML�f�[�^��ǂݍ���ł���܂��B

��document�֐����g����XML�f�[�^��ǂݍ���

�@document�֐��͎��̂悤�ɌĂяo���܂��B

document�֐��̎g����

node-set�@document(object, node-set?)
�i�ԋp�l�j�@�@�@�@�@�iURI�w��j�i���URI�j

  • ��{�I��1�Ԗڂ̈����œǂݍ��ݑΏۂ�XML�f�[�^��URI���w�肵�܂��B2�Ԗڂ̈���������ꍇ�A����͑���URI�ł���1�Ԗڂ���URI�ɕϊ����邽�߂̊��URI�ł��B
  • �ԋp�l�́A�ǂݍ��ݑΏۂ�XML�f�[�^�̃��[�g�m�[�h�ł��B

�@document�֐���2�Ԗڂ̈����ɂ‚��Đ�����⑫���܂��B����1�Ԗڂ̈������gcustomers.xml�h�̂悤�ɑ���URI�̏ꍇ�Adocument�֐��͓ǂݍ��ݑΏۂ�XML�f�[�^�����‚��o�����߂Ɋ��URI���g���Đ��URI�ւƕϊ�����K�v������܂��B���̂��߂�2�Ԗڂ̈������g���܂��B���̗�����Ă��������B

document("customers.xml","/")

�@���C����XML�f�[�^�̃��[�g�m�[�h�i/�j���g http://seminars.utj.co.jp/main.xml�h�Ƃ������URI�������Ă���Ȃ�΁Acustomers.xml�́ghttp://seminars.utj.co.jp/customers.xml�h�Ƃ������URI�ɕϊ�����܂��i�}2�j�B

}2@URIőURIURI֕ϊ
�}2�@���URI�ő���URI����URI�֕ϊ�����

�@����g����document�֐��̎g�p���@�������܂��傤�B���X�g1�Ɏ������C����XML�f�[�^�gmain.xml�h�ƁA���X�g2�Ɏ����ǂݍ��ݑΏۂ�XML�f�[�^�gcustomers200110.xml�h���g���ĐV�K�ڋq�\���쐬���āAWeb�u���E�U�ɕ\������Ƃ��܂��B

<?xml version="1.0" encoding="shift_jis"?>
<?xml:stylesheet type="text/xsl" href="tboutput.xsl"?>
<customers_list>
  <title>�V�K�o�^�ڋq���X�g�i10�����j</title>
  <tbl href="customers200110.xml"/>
</customers_list>
���X�g1�@���C����XML�f�[�^�gmain.xml�h
<?xml version="1.0" encoding="shift_jis"?>
<customers>
  <customer id="c001">
    <name>�H�{���Y</name>
    <addr>�`�斃�z�K����A-A-A</addr>
    <area>�֓�</area>
  </customer>
  <customer id="c002">
    <name>�����Ԏq</name>
    <addr>���l�s����扳�wB-B-B</addr>
    <area>�֓�</area>
  </customer>
  <customer id="c003">
    <name>���X�؎��Y</name>
    <addr>���s�ߌ�����o��C-C-C</addr>
    <area>�ߋE</area>
  </customer>
  <customer id="c004">
    <name>�c���ǎq</name>
    <addr>�Y�Y�s�����qD-D-D</addr>
    <area>����</area>
  </customer>
</customers>
���X�g2�@�ǂݍ��ݑΏۂ�XML�f�[�^�gcustomers200110.xml�h

�@�K�p����X�^�C���V�[�g�gtboutput.xsl�h�����X�g3�Ɏ����܂��B

<?xml version="1.0" encoding="Shift_jis"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
    <body>
      <xsl:apply-templates/>
    </body>
  </html>
</xsl:template>
<xsl:template match="customers_list">
  <xsl:apply-templates select="title"/>
  <xsl:apply-templates select="tbl"/>
</xsl:template>
<xsl:template match="title">
  <h3><xsl:value-of select="."/></h3>
</xsl:template>
<xsl:template match="tbl">
  <table border="3">
    <tr>
      <th>�����O</th>
      <th>���Z��</th>
    </tr>
    <xsl:variable name="t" select="document(@href)"/>
    <xsl:for-each select="$t//customer">
      <tr>
        <td><xsl:value-of select="name"/></td>
        <td><xsl:value-of select="addr"/></td>
      </tr>
    </xsl:for-each>
  </table>
</xsl:template>
</xsl:stylesheet>
���X�g3�@document�֐����g���X�^�C���V�[�g

�@���̃X�^�C���V�[�g�ɂ‚��ĉ�����܂��B���X�g1�ƃ��X�g3���r���ĕ�����Ƃ���AXSLT�v���Z�b�T�́A�܂����C����XML�f�[�^���������܂��B���C����XML�f�[�^��tbl�v�f���o������ƁAXSLT�v���Z�b�T�́A�V�K�ڋq�\���쐬���܂��B�����Łgcustomers200110.xml�h���ǂݍ��܂�܂��B

�@���X�g1��tbl�v�f���������������Btbl�v�f�̑���href�ɂ́A�ǂݍ��ݑΏۂ�XML�f�[�^��URI�����蓖�Ă��Ă��܂��B

<tbl href="customers200110.xml"/>

�@���X�g3��document�֐����Ăяo���Ă���Ƃ�������Ă��������B������document�֐��́A@href�Ƃ����\�L�ŕ�����Ƃ���A�J�����g�m�[�htbl�v�f�̑���href�̒l���Q�Ƃ���XML�f�[�^�gcustomers200110.xml�h�ɃA�N�Z�X���܂��B�ԋp�l�́A�gcustomers200110.xml�h�̃��[�g�m�[�h�ł��B

document(@href)

�@���̃��[�g�m�[�h�́A���ׂĂ�customer�v�f���Q�Ƃ��邽�߂ɌJ��Ԃ��g�p����܂��B����ŁAxsl:variable�v�f���g���ă��[�g�m�[�h��ϐ�t�Ɋ��蓖�ĂĂ����܂��B

<xsl:variable name="t" select="document(@href)"/>

�@�gcustomers200110.xml�h�̃��[�g�m�[�h�ȉ��̂��ׂĂ�customer�v�f�ɂ‚��āA�e���v���[�g���C���X�^���X������܂��B�ϐ��̒l���Q�Ƃ���Ƃ��́A�ϐ����̓��Ɂg$�h�̕�����t���āg$t�h�ƋL�q���܂��B�]���āg$t//customer�h�Ƃ����\�L�́A�ϐ�$t�Ɋ��蓖�Ă��Ă��郋�[�g�m�[�h�̎q���m�[�hcustomer���w���Ă��܂��B

<xsl:for-each select="$t//customer">
  <tr>
    <td><xsl:value-of select="name"/></td>
    <td><xsl:value-of select="addr"/></td>
  </tr>
</xsl:for-each>

�@IE5�ɂ��\�����ʂ�}3�Ɏ����܂��B

}3@document֐gTv̕\
�}3�@document�֐����g���T���v���̕\������

���ݎQ�Ƃ���m�[�h�����ʂ���

�@������XML�f�[�^�̈����ȂǁA���������G�ɂȂ��Ă����XSLT�̂���m�[�h����ʂ̃m�[�h�֌����I�ɑ��ݎQ�Ƃ���d�g�݂��~�����Ȃ�܂��BXSLT�ł́A�r���g�C���֐�id��r���g�C���֐�key���g���ăm�[�h�̑��ݎQ�Ƃ��������邱�Ƃ��ł��܂��B

��id�֐����g���đ��ݎQ�Ƃ���

�@�܂��Aid�֐��ɂ‚��Đ������܂��B

id�֐��̎g����

node-set�@id(object)
�i�ԋp�l�j�iID�^�̑����l�j

  • �����Ŏw�肳�ꂽ�l�Ɠ�����ӂ�ID�l�����ƒm�[�h�A�܂��̓m�[�h�W����ԋp���܂��B

�@id�֐��̎g���������X�g4��XML�f�[�^���g���Ď����܂��B

<?xml version="1.0" encoding="shift_jis"?>
<?xml:stylesheet type="text/xsl" href="id.xsl"?>
<!DOCTYPE customers [
  <!ELEMENT customers (customer)*>
  <!ELEMENT customer (name,addr,area)>
  <!ELEMENT name (#PCDATA)>
  <!ELEMENT addr (#PCDATA)>
  <!ELEMENT area (#PCDATA)>
  <!ATTLIST customer id ID #REQUIRED>
]>
<customers>
  <customer id="c001"> 
    <name>�H�{���Y</name>
    <addr>�`�斃�z�K����A-A-A</addr>
    <area>�֓�</area>
  </customer>
  <customer id="c002">
    <name>�����Ԏq</name>
    <addr>���l�s����扳�wB-B-B</addr>
    <area>�֓�</area>
  </customer>
  <customer id="c003">
    <name>���X�؎��Y</name>
    <addr>���s�ߌ�����o��C-C-C</addr>
    <area>�ߋE</area>
  </customer>
  <customer id="c004">
    <name>�c���ǎq</name>
    <addr>�Y�Y�s�����qD-D-D</addr>
    <area>����</area>
  </customer>
</customers>
���X�g4�@id�֐��̂��߂̃T���v��XML�f�[�^

�@�K�p����X�^�C���V�[�g�̓��X�g5�ɂ���Ƃ���ł��B

<?xml version="1.0" encoding="shift_jis"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
    <body>
      <h3>���q�lID��c004�̕��͎��̕��ł��B</h3>
      <ul> 
        <li><xsl:value-of select="id('c004')/name"/>�l</li>
      </ul>
    </body>
  </html>
</xsl:template>
</xsl:stylesheet>
���X�g5�Fid�֐����g�����X�^�C���V�[�g��

�@���̒���id�֐����g���Ă��镔�������Ă��������B

<li><xsl:value-of select="id('c004')/name"/>�l</li>

�@id('c004')�Ƃ����L�q�́A����id�iDTD�ő����̃f�[�^�^��ID�^�ɐ錾����Ă���j�̒l���gc004�h�ƂȂ�customer�v�f�̂��Ƃ�\���Ă��܂��B�����ł́A���̗v�f�̎q�v�fname�̕�����l��HTML�^�O<li></li>�̊Ԃɗv�f�̓��e�Ƃ��Ė��ߍ���ł��܂��B

�@IE 5�ɂ��\�����ʂ�}4�Ɏ����܂��B

}4@id֐gTv̕\
�}4�@id�֐����g���T���v���̕\������

��id�֐��̌��E

�@�������Ȃ���Aid�֐��ɂ͈ȉ��̌��E������܂��B

  • ID������DTD�ȂǂŒ�`����Ă��Ȃ���΂Ȃ�Ȃ��B
  • ID�͑����Ƃ��Ďw�肷��B�]���ėv�f�̓��e���g�����Q�Ƃ��ł��Ȃ��B
  • 1�‚̗v�f�����Ă�ID��1�‚����B

�@�����ŁAID�^�Ƃ��Ē�`����Ă��Ȃ��Ă��A�X�^�C���V�[�g�̒��Œ�`����Α��ݎQ�Ƃ��ł���悤�ɂ����̂�key�֐��ł��B

��key�֐����g���đ��ݎQ�Ƃ���

�@id�֐��́ADTD�i���邢��XML Schema�Ȃǂ̃X�L�[�}�L�q����j��ID�^�Ƃ��Ė����I�ɐ錾���ꂽ�������m�[�h�̎��ʏ��Ƃ��Ďg���֐��ł��B����A���ꂩ���������key�֐��́A����v�f�̕����f�[�^�⑮���̒l�iID�^�łȂ��Ă悢�j���L�[�Ƃ��ăX�^�C���V�[�g�̒��Œ�`���A������m�[�h�̎��ʏ��Ɏg�����߂̊֐��ł��B

�@key�֐��Ŏg�p����L�[�́A�X�^�C���V�[�g�̒���xsl:key�v�f���g���Ă��炩���ߐ錾����K�v������܂��Bxsl:key�v�f�̏������͈ȉ��̂Ƃ���ł��B

xsl:key�̏�����

<xsl:key name="�L�[�̖��O" match="�p�^�[��" use="��"/>
  • name�����́A�L�[�̖��O���w�肵�܂��Bmatch�����́A�L�[�����蓖�Ă�m�[�h���w�肵�܂��Buse�����́A�w�肳�ꂽ���̕]�����ʂ��L�[�̒l�Ƃ��܂��Buse�����̎���]������ɓ������ẴR���e�L�X�g�m�[�h��match�����̃m�[�h�ɂȂ�܂��B

�@xsl:key�v�f�Ő錾���ꂽ�L�[�����ۂɎQ�Ƃ���key�֐��̏������͈ȉ��̂Ƃ���ł��B

key�֐��̎g����

node-set�@key(string, object)
�i�ԋp�l�j�i�L�[�̖��O�j�i�L�[�̒l�j

  • �ԋp�l�́A��1�����̃L�[�̖��O�Ƒ�2�����̃L�[�̒l�����ƒm�[�h�W���ł��B

�@���X�g2��XML�f�[�^���g���āAkey�֐��̎g�����������܂��B���X�g6�̃X�^�C���V�[�g�gkey.xsl�h��K�p���܂��B

<?xml version="1.0" encoding="shift_jis"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="area-key" match="customer" use="area"/>
<xsl:template match="/">
  <html>
    <body>
      <h3>�֓��n���ɂ��Z�܂��̂��q�l�͎��̕��X�ł��B</h3>
      <ul>
      <xsl:for-each select="key('area-key','�֓�')">
        <li><xsl:value-of select="name"/>�l</li>
      </xsl:for-each>
      </ul>
    </body>
  </html>
</xsl:template>
</xsl:stylesheet>
���X�g6�@key�֐����g�����X�^�C���V�[�g�̗�

�@key�v�f���g���Ă���Ƃ�����ȉ��ɔ����o���܂��B

<xsl:key name="area-key" match="customer" use="area"/>

�@name�����ɂ��A�L�[�̖��O�Ƃ��āgarea-key�h���w�肵�Ă��܂��Bmatch�����ɂ��A�L�[�����蓖�Ă�m�[�h�Ƃ���customer�v�f���w�肵�Ă��܂��B�����use�����ɂ��Acustomer�v�f���R���e�L�X�g�m�[�h�Ƃ����Ƃ���area�v�f�̕�����l���L�[�Ƃ��Ďg�p����邱�Ƃ��w�肵�Ă��܂��B

�@key�֐����g���Ă��镔�����ȉ��ɔ����o���܂��B

<xsl:for-each select="key('area-key','�֓�')">

�@key�֐��̍ŏ��̈����́Akey�v�f�ɂ����āgarea-key�h�Ƃ������O�Ő錾���ꂽ�L�[���g�p���邱�Ƃ��w�肵�Ă��܂��B2�Ԗڂ̈����̓L�[�̒l���w�肵�Ă��܂��B���̏ꍇ�Akey�֐���customer�v�f�̎q�v�farea�̕�����l���g�֓��h�ƂȂ�v�f��ԋp���܂��B

�@ID�^�̑����l�́A1�‚�XML�f�[�^�̒��ň�ӂłȂ���΂Ȃ�܂���B�]���ē���ID�l�����—v�f�����݂��Ă͂Ȃ�܂���B����A�����L�[�l�����—v�f�͕��������Ă��\���܂��񂵁A1�‚̗v�f�������̎�ނ̃L�[�������Ă����܂��܂���B���������āAkey�֐��ɂ���ĕ����̃m�[�h���Q�Ƃ��邱�Ƃ����蓾�܂��B

�@���X�g2��XML�f�[�^�̏ꍇ�A�L�[�̒l�ł���area�̕�����l���g�֓��h�ƂȂ�v�f���������݂��Ă��܂��iid�������gc001�h��customer�v�f�Ɓgc002�h��customer�v�f�j�B���X�g6�ł͌J��Ԃ��������s��for-each�v�f���g����key�֐����Q�Ƃ��邷�ׂĂ̗v�f���������Ă��܂��B�������ʂ�}5�Ɏ����܂��B

}5@key֐gTv̕\
�}5�@key�֐����g���T���v���̕\������

���܂Ƃ�

�@����́Adocument�Aid�Akey�Ƃ���3�‚̊֐������グ�A������XML�f�[�^�𑀍삷����@�ƁA���ݎQ�Ƌ@�\���g���ĕK�v�ȃf�[�^�𒊏o������@�ɂ‚��Đ������܂����B����́A���ʃc���[�̃t�@�C���o�́A�����XSLT�v�f��֐��̊g���ɂ‚��ĉ�����܂��B

�{�L���́A���{���j�e�b�N���s��XML�e�N�m���W�[������񎏁uDigital Xpress�v�Ɍf�ڂ��ꂽ�AXSLT���W�uXSLT�̎��͂�T��I�v�̓��e�����ƂɁA���M�C���������̂ł��B



Copyright © ITmedia, Inc. All Rights Reserved.

�y�[�W�g�b�v�ɖ߂�
OSZAR »