�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
�@��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
�@����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>
<?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>
�@�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�^�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
���ݎ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>
�@�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>
�@���̒���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
��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>
�@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
���܂Ƃ�
�@����́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.