Cất chứa
0Hữu dụng +1
0
MARC tiêu chuẩn
ISO2709 là MARC một loại tiêu chuẩn. MARC là Machine Readable Catalog(ue) viết tắt, ý tức “Máy móc nhưng đọc mục lục”, tức lấy số hiệu hình thức cùng riêng kết cấu ký lục ở máy tính tồn trữ vật dẫn thượng, dùng máy tính phân biệt cùng đọc mục lục. MARC nhưng một lần đưa vào, nhiều lần sử dụng, là công nghệ thông tin phát triển cùng tài nguyên cùng chung yêu cầu sản vật.
Tiếng Trung danh
ISO2709
Sinh ra địa điểm
Nước Mỹ
Cách thức
Đầu tiêu mục lục số liệu ba cái khu
Tương ứng phân loại
MARC

MARC số liệu sinh ra cùng phát triển

Bá báo
Biên tập
MARC số liệu nhất thìa hiệp sinh non sinh với nước Mỹ. Thải hồ 1961 năm, nước Mỹ quốc hội thư viện bắt đầuThư viện tự động hoáThiết tưởng, theo máy tính kỹ thuật tiến bộ, 1963 năm, nước Mỹ quốc hội thư viện tổ chức cử rút nãi ở nội bộ công tác trung chọn dùng máy vi tính kỹ thuật tính khả thi điều tra, 1966 năm 1 nguyệt, sinh ra 《 tiêu tụng quạ thấm chuẩn máy móc có thể đọc mục lục kiểu dáng kiến nghị 》, tức MARC-1 cách thức, 1967 năm đưa ra MARC-2, nó là trước mắt sử dụng các loại cơ đọc mục lục cách thức mẫu bổn. 19 mới xu cây 69 năm bắt đầu hướng cả nước phát hành MARCII cách thức thư mục băng từ, cũng đem MARCII cách thức xưng là US- MARC, tức nước Mỹ cơ liêu ngu nói khí nhưng đọc mục lục. Làm một loại máy tính kỹ thuật phát triển lúc đầu hình thành số liệu cách thức, này một cách thức ở định nghĩa khi tương đối đầy đủ mà chiếu cố đến thư viện thư mục số liệu ở văn hiến hình thức miêu tả, nội dung miêu lan muội thịt khô liền thuật, kiểm tra chờ phương diện yêu cầu, biểu hiện vì: Tự đoạn số lượng nhiều; lục tường tận; nhưng kiểm tra tự đoạn nhiều; định trường cùng không chừng trường tự đoạn kết hợp, linh hoạt thực dụng; giữ lại chủ yếu khoản mục cập truyền thống soạn mục lục đặc điểm; mở rộng sửa chữa công năng cường; cũng có thể ở thực tiễn trung không ngừng phát triển hoàn thiện. Nước Mỹ cơ đọc mục lục thích hợp nước Mỹ tình hình trong nước, anh pháp chờ quốc gia căn cứ từng người tình huống sáng lập chính mình cơ đọc mục lục, vì tiến thêm một bước hiệp đương thúc điều, xúc tiến quốc tế giao lưu, thống nhất các quốc gia cơ đọc mục lục cách thức, quốc tế thư viện liên hợp sẽ ở USMARC cơ sở thượng định ra “Quốc tế cơ đọc mục lục thông tín cách thức”, tức UNIMARC, hiện tại rất nhiều quốc gia đều chọn dùng UNIMARC tiến hành văn hiến soạn mục lục.

CNMARC tóm tắt

Bá báo
Biên tập
CNMARC là Trung Quốc cơ đọc mục lục ( China Machine-Readable Catalogue ) viết tắt, là dùng cho Trung Quốc quốc gia thư mục cơ cấu cùng cái khác quốc gia thư mục cơ cấu cùng với Trung Quốc quốc nội thư viện cùng tình báo bộ môn chi gian, lấy tiêu chuẩn máy tính nhưng đọc hình thức trao đổi thư mục tin tức. Trung Quốc cơ đọc mục lục nghiên cứu chế tạo với 20 thế kỷ 70 niên đại. 1979 năm thành lậpCả nước tin tức cùng văn hiến chuẩn hoá kỹ thuật ủy ban,Thành lập Bắc Kinh khu vực cơ đọc mục lục nghiên cứu chế tạo tiểu tổ; 1982 năm, Trung Quốc tiêu chuẩn tổng cục công bố tham chiếu ISO2709 chế định quốc gia tiêu chuẩn 《 văn hiến mục lục tin tức trao đổi dùng băng từ cách thức 》(GB2901-82), vì tiếng Trung MARC cách thức chuẩn hoá đặt cơ sở; 1986 năm UNIMARC trung bản dịch diện thế. Tại đây cơ sở thượng, căn cứ quốc gia của ta thực tế tình huống, biên chế 《 Trung Quốc cơ đọc mục lục thông tin cách thức 》 thảo luận bản thảo, 1992 năm 2 nguyệt chính thức xuất bản 《 Trung Quốc cơ đọc mục lục thông tin cách thức 》, tức CN-MARC. CNMARC cách thức vì ta quốc cơ đọc mục lục thực hiện chuẩn hoá, cùng quốc tế nối đường ray, từSố liệu kết cấuPhương diện cung cấp bảo đảm.

ISO2709 cách thức

Bá báo
Biên tập
cnMarc chủ yếu chia làm ba cái đoạn, đầu tiêu mục lục số liệu ba cái khu.[1]

Đầu tiêu khu

1. Định nghĩa
Nên bộ phận bao hàm căn cứ ISO 2709 định ra đối ký lục tiến hành xử lý khi sở cần thông dụng tin tức.
2. Xuất hiện tình huống
Ký lục đầu tiêu khu xuất hiện ở mỗi cái ký lục mở đầu, nó là chuẩn bị cùng không thể lặp lại.
3. Tự đoạn hào, chỉ thị phù cùng tử tự đoạn
Ký lục đầu tiêu không có tự đoạn hào, chỉ thị phù hoặc tử tự đoạn đánh dấu.
4. Định trườngSố liệu nguyên tố
Đầu tiêu trungSố liệu nguyên tốLà từ tự phù vị trí đánh dấu. Đầu bia tổng trưởng độ vì 24 cái tự phù. Tự phù vị trí quy định từ
0-23.
Cố định trường số liệu nguyên tố biểu
Số liệu nguyên tố tên tự phù số tự phù vị trí
(1) ký lục chiều dài 5 0-4
(2) ký lục trạng thái 1 5
(3) chấp hành số hiệu 4 6-9
(4) chỉ thị phù chiều dài 1 10
(5) tử tự đoạn đánh dấu phù chiều dài 1 11
(6) số liệu lúc đầu địa chỉ 5 12-16
(7) ký lục phụ gia định nghĩa 3 17-19
(8) địa chỉ mục lục khu kết cấu 4 20-23
.Nội dung chú thích
Ký lục đầu mục tiêu xác định vị ở mỗi cái ký lục mở đầu, nó bao hàm xử lý ký lục cần số liệu.
Tự phù vị 9, 10, 11, 20-23
Sở hàm riêng giá trị nhưng thông quaMáy tính trình tựSinh thành. Tự phù vị 0-4 cùng 12-16 sở hàm chính là con số hình số liệu, nó
Tỏ vẻ ký lục trung tương ứng bộ phận tự phù số lượng khả năng từ máy tính ở sinh thành ký lục khi sinh ra.
Tự phùVị 5, 6-9, 17-19
Giá trị, nếu chọn dùng ngoại lai nguyên số liệu, có thể từ nguyên ký lục số liệu trung thông qua thay đổi trình tự sinh thành. Nếu sử dụng bổn cách thức chế tác nguyên ký lục, tắc
Từ, thủ công chỉ định.
Kỹ càng tỉ mỉ nội dung thấy kỹ càng tỉ mỉ cửa sổ cố định trường khuôn mẫu.
Tương quan tự đoạn
Ký lục đầu tiêu trung cung cấpSố liệu nguyên tốỞ cách thức cái khác bộ phận là không có. Tuy rằng chấp hành số hiệu một ít giá trị,
Như “Ký lục loại hình” cùng “Thư mục cấp bậc” cùng với nó số hiệu số liệu có chút tương trọng, nhưng trên thực tế đầu tiêu số hiệu tỏ vẻ
Chính là ký lục đặc thù, mà không phải trực tiếp tỏ vẻ thư mục thật thể bản thân đặc thù.

Mục lục khu

Mục lục khu từ một chuỗi con số cấu thành, chủ yếu phản ánh nên ký lục trung có tự đoạn ở số liệu khu lúc đầu vị trí cập chiều dài. Mỗi 12 vị tỏ vẻ một chữ đoạn tin tức
4-7: Chiều dài
8-12: Lúc đầu vị trí

Số liệu khu

Căn cứ mục lục khu chiết phân tin tức nhưng đạt được tự đoạn nội dung, lại thông qua tử tự đoạnPhân cách phùPhong đến cụ thể tử đoạn / tử tự đoạn nội dung
Ký lục phân cách phù ASCII giá trị vì 29
Tự đoạn phân cách phù ACSII giá trị vì 30
Tử tự đoạn phân cách phù ASCII giá trị vì 31

C# đọc lấy ISO2709 số liệu số hiệu

Bá báo
Biên tập
Có đôi khi chúng ta yêu cầu ở C# trung đọc lấy ISO02709 số liệu, nhưng là có rất nhiều tay mới đối cái này còn sẽ không, hôm nay hoa một chút thời gian cố ý viết cái này số hiệu, hy vọng đối đại gia có trợ giúp. using System;[2]
using System.Collections;
/*
Loại này công năng, là đọc lấy ISO2709 số liệu
Được đến ISO2709 số liệu ba cái đoạn, đầu tiêu \\ mục lục \\ số liệu
Đạt được tự đoạn tin tức
Đạt được tử tự đoạn tin tức
*/
namespace Nosi.Library
{
/// <summary>
/// Class1 trích yếu thuyết minh.
/// </summary>
public class Marc
{
#regionĐại lượng không đổiĐịnh nghĩa
public const char FLDEND = (char)30; // tự đoạn kết thúc phù
public const char RECEND = (char)29; // ký lục kết thúc phù
public const char SUBFLD = (char)31; // tử tự đoạn chỉ thị phù
public const int FLDNAME_LEN = 3; // tự đoạn danh chiều dài
public const int MAX_MARCREC_LEN = 100000; // MARC ký lục lớn nhất chiều dài
#endregion
string m_strMarc = \ "\"; // MARC ký lục thể
public Marc()
{
//
// TODO: Ở chỗ này tăng thêmCấu tạo hàm sốLogic
//
}
// đạt được đầu tiêu
private string GetHeader()
{
string strHeader = null;
strHeader = m_strMarc.Substring(0,24);
return strHeader;
}
// đạt được mục lục
private string GetMuci()
{
char[] charr = m_strMarc.ToCharArray();
string strMuci = null;
int i = 24; // đầu tiêu tự phù không hề đọc lấy
while(i < m_strMarc.Length)
{
strMuci += charr[i].ToString();
if(charr[i] == FLDEND) break; // phát hiện tự đoạn đánh dấu
i++;
}
return strMuci;
}
// đạt được số liệu khu
private string GetData()
{
string strData = null;
int iMuci = this.GetMuci().Length;
int iHeader = this.GetHeader().Length;
int iMarc = m_strMarc.Length;
strData = m_strMarc.Substring(iMuci + iHeader,iMarc - iMuci - iHeader);
return strData;
}
// đạt được mục lục khu trung tự đoạn danh
// -1 error
// 0 no found
// 1 found
private int GetFieldPos(string strFieldName,
int nIndex,
out string strFieldPos)
{
string strMuci = this.GetMuci();
strFieldPos = null;
int i = 0;
int nRet = 0;
if(strMuci == null)
return -1;
if((strMuci.Length - 1) % 12!= 0) // giảm 1 là bởi vì mục lục khu kết thúc đánh dấu phù [Page]
return -1; // length error
do
{
if(strMuci.Substring(i,3) == strFieldName)
nRet ++;
if(nRet == nIndex)// from zero add
{
strFieldPos = strMuci.Substring(i,12);
break;
}
i += 12;
} while(i<strMuci.Length);
if (strFieldPos == null)
return 0; // no found
return 1;
}
// thông quaTự đoạn danh,Tự đoạn trung xuất hiện số lần đạt được tự đoạn nội dung
// số lần từ 1 bắt đầu đếm hết
// -1 error
// 0 no found
// 1 found
public int GetField(string strFldName,
int nIndex,
out string strFld)
{
strFld = null;
string strFldPos = null;
int nRet = this.GetFieldPos(strFldName,nIndex,out strFldPos);
if (nRet!= 1)
return nRet;
if(strFldName.Length!= 3 )
return -1; // subfield must 3 chars
int nLength = int.Parse( strFldPos.Substring(3,4));
int nBeginPos = int.Parse( strFldPos.Substring(7,5));
char[] chData = this.GetData().ToCharArray();
int nPos =0;
int i = 0;
while( nPos < chData.Length)
{
i += GetCharLength(chData[nPos]);
if((i >= nBeginPos) && i<= (nBeginPos + nLength))
strFld += chData[nPos].ToString();
nPos ++;
}
if(strFld == null)
return 0;
return 1;
}
// từ tự đoạn trung đạt được xuất hiện số lần tử tự đoạn
// -1 error
// 0 not found
// 1 found
public int GetSubField(string strFld,
string strSubName,
int nIndex,
out string strSubFld)
{
strSubFld = null;
if(strSubName.Length!= 1)
return -1; // subfield\'symbol char must 1 char
if(strFld == null)
return -1;
char[] chData = strFld.ToCharArray();
int nPos = 0;
bool isNewSub = false;
int nFound = 0; // 0: not 1: first time found 2: second time found
while( nPos < chData.Length)
{
nPos ++; [Page]
if((chData[nPos-1] == SUBFLD) && (chData[nPos].ToString() == strSubName))
nFound ++; // found if ((nFound == nIndex) && (isNewSub == false))
{
if(chData[nPos] == SUBFLD)
{
isNewSub = true;
break;
}
strSubFld += chData[nPos].ToString();
}
}
if(strSubFld == null)
return 0;
return 1;
}
// từ tự đoạn tổ trung đạt được tử tự đoạn
// -1 error
// 0 not found
// 1 found
public int GetSubField(string strGroup,
string strSubName,
out string strSubFld)
{
strSubFld = null;
if(strSubName.Length!= 1)
return -1; // subfield\'symbol char must 1 char
if(strGroup == null)
return -1;
char[] chData = strGroup.ToCharArray();
int nPos = 0;
bool isNewSub = false;
int nFound = 0; // 0: not 1: first time found 2: second time found
while( nPos < chData.Length)
{
nPos ++;
if((chData[nPos-1] == SUBFLD) && (chData[nPos].ToString() == strSubName))
nFound ++; // found
if (isNewSub == false)
{
if(chData[nPos] == SUBFLD)
{
isNewSub = true;
break;
}
strSubFld += chData[nPos].ToString();
}
}
if(strSubFld == null)
return 0;
return 1;
}
// từ tự đoạn trung đạt được xuất hiện số lần tự đoạn tổ
// -1 error
// 0 not found
// 1 found
public int GetFieldGroup(string strFld,
int nIndex,
out string strGroup)
{
strGroup = null;
if(strFld == null)
return -1;
char[] chData = strFld.ToCharArray();
int nPos = 0;
string strSplit = \ "a\"; // giống nhau lấy a tử tự đoạn vì tự đoạn tổ phân chia
int nFound = 0; // 0: not 1: first time found 2: second time found[Page]
while( nPos < chData.Length)
{
nPos ++;
if((chData[nPos-1] == SUBFLD) && (chData[nPos].ToString() == strSplit))
nFound ++; // found
if (nFound == nIndex)
strGroup += chData[nPos].ToString();
if(nFound > nIndex)
break;
}
if(strGroup == null)
return 0;
return 1;
}
// đạt được tự phù chiều dài
//
private int GetCharLength(char ch)
{
int nLength = 0;
if((short)ch < 0 || (short)ch > 128)
{
nLength += 2;
}
else
{
nLength = nLength + 1;
}
return nLength;
}
public string strMarc
{
get
{
return m_strMarc;
}
set
{
m_strMarc = value;
}
}
}
}